0

has_many - belogs_to の関係によって作成されたメソッドにアクセスしようとすると、 undefined method error が発生します。コードは次のとおりです(簡略化):

local.rb (モデル):

class Local < ActiveRecord::Base
   has_many :foods, dependent: :destroy, :foreign_key => 'local_id'
end

food.rb :

class Food < ActiveRecord::Base
   attr_accessible :descrizione, :nome, :prezzo, :voto
   belongs_to :local, :foreign_key => 'local_id'
end

foodController で create アクションを呼び出す /locals/show.html.erb ビュー:

...

<%= form_for :food, :url => {:controller  => :foods, :action => :create} do |f| %>
...
<% end %>

food_controller.rb

class FoodsController < ApplicationController
    def create
        @food = @local.foods.build(params[:food])
    end
end

ここで問題が food_controller の create アクションで発生します: "undefined method 'foods' ' . なぜ? 関係は local.foods メソッドを有効にする必要がありますか? (@local は locals_controller.rb で定義され、@local = Local.find(params[ :id]) 、 local_id 属性は schema.rb と最後の db migration で定義されていますが、明確にするために)

ありがとうございました

4

2 に答える 2

1

accepts_nested_attributes_for ここをチェックしてください。これがあなたがやろうとしていることをするための標準的な方法だと思います。

于 2012-07-07T16:54:25.270 に答える
0

は別のコントローラーで定義されているため@local、FoodControllerからアクセスすることはできません。

于 2012-07-07T16:54:40.180 に答える