我有一个查询模型:
class Query < ActiveRecord::Base
belongs_to :test
end
与测试模型有关:
class Test < ActiveRecord::Base
has_one :query
end
我想在列表中显示所有查询以及与之关联的测试描述。我已将以下内容放入我的查询控制器文件中以获取索引方法:
Query.includes(:test).each do |query|
end
我的问题有两个方面:
以上是否正确?
我可以在index.html.erb文件的“view”字段中使用哪些代码来显示与Query关联的测试的描述?如果我写
<td><%= query.test.description %></td>
我收到以下错误:“nil的未定义方法`描述:NilClass”
感谢。
答案 0 :(得分:1)
你的循环不应该在控制器内。您的查询控制器应该只包含以下内容:
def index
@queries = Query.includes(:test).all
end
并且您的查询/索引视图应包含循环:
<table>
<% @queries.each do |query| %>
<tr>
<td><%= query.test.description %></td>
</tr>
<% end %>
</table>
你应该通过使用partials和Rail的内置支持来渲染集合来进一步折射:
<table><%= render @queries %></table>
<tr><%= render query.test %></tr>
<td><%= test.description %></td>
答案 1 :(得分:0)
尝试Query.where(:test_id =&gt; params [:test_id])。all.each ...
如果您有query.test == nil,则会出错。尝试&lt;%= query.test.try:description%&gt;