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 で定義されていますが、明確にするために)
ありがとうございました