【发布时间】:2012-07-07 16:21:16
【问题描述】:
当我尝试访问由 has_many - belogs_to 关系创建的方法时,我得到一个未定义的方法错误。这是代码(简化):
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
在 foodsController 上调用 create 操作的 /locals/show.html.erb 视图:
...
<%= form_for :food, :url => {:controller => :foods, :action => :create} do |f| %>
...
<% end %>
foods_controller.rb
class FoodsController < ApplicationController
def create
@food = @local.foods.build(params[:food])
end
end
在foods_controller on create action 中提出了问题:“undefined method 'foods' '。为什么?关系应该启用 local.foods 方法? (@local 在 locals_controller.rb 中定义,@local = Local.find(params[:id]) 和 local_id 属性在 schema.rb 和最后一个 db migration 中定义,只是为了清楚)
谢谢
【问题讨论】:
-
你能提供更多细节吗?是不是说@local 为零?
-
@local 不为零,告诉我你还需要什么其他详细信息
-
既然@local是在不同的控制器中定义的,是不是不能从FoodController访问?
-
您如何从 food 控制器访问在 locals 控制器中定义的 @local?
-
完整的错误信息是什么。请张贴。
标签: ruby-on-rails ruby ruby-on-rails-3 relationship belongs-to