Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails create with上的未定义方法有\u多个并且属于\u关系_Ruby On Rails_Ruby_Ruby On Rails 3_Relationship_Belongs To - Fatal编程技术网

Ruby on rails create with上的未定义方法有\u多个并且属于\u关系

Ruby on rails create with上的未定义方法有\u多个并且属于\u关系,ruby-on-rails,ruby,ruby-on-rails-3,relationship,belongs-to,Ruby On Rails,Ruby,Ruby On Rails 3,Relationship,Belongs To,当我试图访问由关系has\u many-belogs\u创建的方法时,我得到一个未定义的方法错误。以下是代码(简化): local.rb(型号): 本地类'local\u id' 结束 food.rb: class Food < ActiveRecord::Base attr_accessible :descrizione, :nome, :prezzo, :voto belongs_to :local, :foreign_key => 'local_id' end

当我试图访问由关系has\u many-belogs\u创建的方法时,我得到一个未定义的方法错误。以下是代码(简化):

local.rb(型号):

本地类'local\u id'
结束
food.rb:

class Food < ActiveRecord::Base
   attr_accessible :descrizione, :nome, :prezzo, :voto
   belongs_to :local, :foreign_key => 'local_id'
end
class食品'local\u id'
结束
调用foodsController上的创建操作的/locals/show.html.erb视图:

...

<%= form_for :food, :url => {:controller  => :foods, :action => :create} do |f| %>
...
<% end %>
。。。
{:controller=>:foods,:action=>:create}do | f |%>
...
食品控制器.rb

class FoodsController < ApplicationController
    def create
        @food = @local.foods.build(params[:food])
    end
end
class FoodsController
此问题在创建操作的foods_controller中提出:“未定义的方法'foods'。为什么?此关系应启用local.foods方法? (@local是在locals_controller.rb中定义的,@local=local.find(params[:id]),local_id属性是在schema.rb和上一次数据库迁移中定义的,需要澄清)


谢谢你

签出
接受
的嵌套属性。我想这是做你想做的事情的标准方法。

因为
@local
是在不同的控制器中定义的,你将无法从FoodController访问它。

你能提供更多细节吗?它说的是@local is nil吗?@local is not nil,告诉我是什么在其他需要的详细信息中,既然@local是在不同的控制器中定义的,那么它不是可以从FoodController访问的吗?您如何从FoodController访问@local,它是在locals控制器中定义的?完整的错误消息是什么?请发布。几小时后我会尝试,但模型之间的关系会创建我方法本身,不是吗?我已经尝试在local.rb中为:foods放置accepts\u nested\u attributes\u,并在@food=local.foods.build中更改food\u控制器的创建操作(params[food])但是“local”没有定义。我可以在locals\u helper中编写一个名为current\u local的方法来检索当前本地吗?我认为您不需要helper方法。您只想将食物对象保存到数据库中吗?如果是,您应该能够执行:food.new(params[:food]).save是的,我想这样做,但是每个食物都有一个本地关联,你能帮我吗?这样做的目的是什么?为什么不在需要数据时查询数据库并将其传递给视图?其目的是由于这个特定的程序,并且因为我正在遵循一个教程,我想了解它是如何工作的a新食物的表单是显示特定本地食物的表单,因此我需要新食物包含特定本地食物id,从而“自动”创建新食物和本地食物之间的关系(已经可视化)
class FoodsController < ApplicationController
    def create
        @food = @local.foods.build(params[:food])
    end
end