0

当我尝试访问由关系 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 和最后一个数据库迁移中定义,只是为了清楚)

谢谢

4

2 回答 2

1

accepts_nested_attributes_for 在这里查看。我认为这是做你想做的事情的标准方法。

于 2012-07-07T16:54:25.270 回答
0

由于@local在不同的控制器中定义,您将无法从 FoodController 访问它。

于 2012-07-07T16:54:40.180 回答