我在一种表格上使用了茧形,我想在每行上添加一个显示按钮,以将用户定向到另一个模型的显示页面。但是,尽管一切正常,但我无法使此按钮显示出来。
这就是我当前的观点:
<div class = "nested-fields">
<div class="table-responsive">
<table class= "table table-hover">
<tr>
<th> Product ID </th>
<th> Button </th>
</tr>
<tr>
<td> <%=f.object.product_id%> </td>
<td> <%= link_to 'Show', product_path(f.object.product_id), class: "btn btn-outline-success", target: :_blank %> </td>
</tr>
</table>
</div>
</div>
当我尝试打开此页面时,出现此错误:
没有路由匹配{:action =>“ show”,:controller =>“ products”,:id => nil},缺少必需的键:[:id]
但是,我知道product_id并不是nill,因为在表上我可以为每一行打印product_id。而且,我的产品路线绝对不错,我已经可以使用它们,包括表演动作。而且我知道product_id在产品表中具有匹配的ID。
此外,如果尝试使用以下方法转到产品的索引页:
<%= link_to 'Show', products_path(f.object.product_id), class: "btn btn-outline-success", target: :_blank %>
将生成以下网址:
我只是不明白为什么我在使用product_path时为什么无法获取ID。
将寻求任何帮助。
谢谢。
答案 0 :(得分:0)
从对话/评论中,我只能得出结论product_id
之一实际上是零。确保表格/页面仍然呈现的简单方法是按如下方式编写视图
<td>
<% if f.object.product_id.present? %>
<%= link_to 'Show', product_path(id: f.object.product_id), class: "btn btn-outline-success", target: :_blank %>
<% end %>
</td>