使用茧形宝石将按钮显示到另一个页面

时间:2019-04-05 07:43:25

标签: ruby-on-rails apache-cocoon

我在一种表格上使用了茧形,我想在每行上添加一个显示按钮,以将用户定向到另一个模型的显示页面。但是,尽管一切正常,但我无法使此按钮显示出来。

这就是我当前的观点:

<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 %>

将生成以下网址:

  

http://localhost:3000/products.97

我只是不明白为什么我在使用product_path时为什么无法获取ID。

将寻求任何帮助。

谢谢。

1 个答案:

答案 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>