当我尝试访问由关系 has_many - belogs_to 创建的方法时,我得到一个未定义的方法错误。这是代码(简化):
local.rb(模型):
class Local < ActiveRecord::Base
has_many :foods, dependent: :destroy, :foreign_key => 'local_id'
end
食物.rb:
class Food < ActiveRecord::Base
attr_accessible :descrizione, :nome, :prezzo, :voto
belongs_to :local, :foreign_key => 'local_id'
end
/locals/show.html.erb 视图调用 foodsController 上的 create 操作:
...
<%= 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
在创建操作的foods_controller 中提出了问题:“未定义的方法'foods''。为什么?关系应该启用local.foods 方法?(@local 在locals_controller.rb 中定义,@local = Local.find(params[ :id]) ,并且 local_id 属性在 schema.rb 和最后一个数据库迁移中定义,只是为了清楚)
谢谢