厨师有一个位置和位置属于Chef。
在位置控制器中,如何致电厨师。以下是我到目前为止的情况。
class LocationsController < ApplicationController
def index
@chef = Location.find_by_chef_id #This is what I am not getting. Should it be,
@chef = Location.find(params[:chef_id])??
@locations = Location.all
end
end
我想在我的视图中使用&lt;%= chef.name%&gt;
之类的东西来调用它这可能是正确的吗?
@location= Location.find(params[:id])
@chef = Chef.find(@location.chef_id)
@chef.each do |chef|
<%= chef.name %>
end
这会显示此错误“无法找到没有ID的位置”
答案 0 :(得分:1)
如果每个位置belongs_to
是一名厨师,那么:
@locations = Location.includes(:chef).all
然后你可以迭代这些:
@locations.each do |location|
location.chef
end
或者如果你想要所有的厨师:
@chefs = @locations.collect(&:chef).uniq
这可能是获取此功能的更好方法,但目前还不清楚您正在寻找什么。
答案 1 :(得分:1)
您可以从LocationsController调用任何模型:
class LocationsController < ApplicationController
def index
@chefs = Chef.all
@chef = Chef.find(params[:id])
@locations = Location.all
@location = Location.find(params[:id])
end
end
如果您想在视图中调用厨师的名字:
@location.chefs.each do |chef|
<%= chef.name %>
end
这完全取决于您尝试渲染的内容类型,但最好直接在控制器中调用模型,除非需要某些关联。
@location.chefs.each do |chef|
if !chef.name.blank?
<%= chef.name %>
end
end
答案 2 :(得分:1)
您可以Location
搜索id
,然后获取其主厨。
def index
@location = Location.find(params[:id])
end
然后在视图中:
@location.chef.each do |chef|
<%= chef.name %>
end
如果chef
可以nil
使用#try
方法:
@location.chef.try(:each) do |chef|
<%= chef.name %>
end
但Location
模型shell包含belongs_to
声明:
class Location < ActiveRecord::Base
belongs_to :chef
end