Ruby on rails 如何在';指数';看法
我有3个与这个问题相关的表格:“djobs”、“rigs”和“摄影师”。一个DJO有很多装备,一个装备有一个摄影师。目前,在我的djob索引屏幕上,我有一个表格,其中列出了djob值和装备值,但我不知道如何显示摄影师值 我不确定从哪里开始,所以我所做的只是确保模型正确关联 这是我的密码: djobs控制器:Ruby on rails 如何在';指数';看法,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有3个与这个问题相关的表格:“djobs”、“rigs”和“摄影师”。一个DJO有很多装备,一个装备有一个摄影师。目前,在我的djob索引屏幕上,我有一个表格,其中列出了djob值和装备值,但我不知道如何显示摄影师值 我不确定从哪里开始,所以我所做的只是确保模型正确关联 这是我的密码: djobs控制器: def index_photography @djobs = Djob.order(:id).joins(:rigs, :photographers) end djobs模型: cla
def index_photography
@djobs = Djob.order(:id).joins(:rigs, :photographers)
end
djobs模型:
class Djob < ActiveRecord::Base
has_many :rigs
has_many :photographers, :through => :rigs
accepts_nested_attributes_for :rigs, allow_destroy: true
accepts_nested_attributes_for :photographers
end
classdjob:rigs
接受:钻机的\u嵌套\u属性\u,允许\u销毁:true
接受\u嵌套的\u属性\u:摄影师
结束
djobs索引视图:
<tbody>
<% @djobs.each do |djob| %>
<tr>
<td><%= link_to 'Edit', edit_djob_path(djob, q: params[:q], :type => "photography") %></td>
<td class="dotted" ><%= djob.jobtype %></td>
<td class="dotted" ><% djob.rigs.each do |rig| %><%= rig.name %></br><% end %></td>
<td class="dotted" ><% djob.rigs.photographers.each do |photographer| %><%= photographer.name %></br><% end %></td>
</tr>
<% end %>
</tbody>
“摄影”)%%>
钻机型号:
class Rig < ActiveRecord::Base
belongs_to :djob
has_one :photographer
accepts_nested_attributes_for :photographers
end
class-Rig
摄影师模型:
class Photographer < ActiveRecord::Base
belongs_to :rig
end
class摄影师
这段代码给了我一个错误:“没有为‘摄影师’这个名字找到关联。它已经被定义了吗?”。我只想让表格显示摄影师与特定装备相关的姓名
编辑:我尝试了下面答案中的建议代码,并将其用作我的代码:
<td class="dotted" ><% djob.photographers.each do |photographer| %><%= photographer.name %></br><% end %></td>
我还修复了rigs和djobs的关联模型代码
虽然它没有给我任何错误,因为我以前,有没有摄影师显示在所有。现在完全是空白。我不知道如何解决这个问题。我知道事实上,摄影师与djob相关的钻机相关。钻机正在展示。所以我不知道为什么摄影师根本没有为我出现。我乐于接受新思想。我想问题就在这里
可能应该是(显示所有与djob相关的摄影师)
或
为每个钻机显示一个摄影师
出现错误的原因是,您的
djob
模型有许多摄影器
(复数形式),但rig只有一个摄影器
,在我看来,“双重嵌套属性值”似乎不是一件事。我可能会说得非常糟糕。我不太确定该用哪个术语。我的意思是显示与已经关联的表关联的表中的数据,如果这有意义的话。