我不断地得到错误,我不能链接到一个对象,因为它不存在。通常情况下,比如“商店”有一个“顾客”,所以在“商店展示”页面上,我想链接到在那里购买的顾客(通过“销售”模式)。
不管是什么原因,客户不再在数据库中,所以当我执行link_to warehouse.customer_id customer_path(warehouse)时,我在nil或No route matches {:action=>"show", :controller=>"customers", :id=>nil} missing required keys: [:id]上得到一个no method错误。
我应该做link_to warehouse.customer_id customer_path(warehouse) if warehouse.customer.present?还是在它周围放一个if语句,这样我就可以显示客户id,而不是什么都不显示

<% if @contract.customer.present? %>
  <p><%= link_to @contract.customer_id, customer_path(@contract.customer) %>
<% else %>
  <p><%= @contract.customer_id %>
<% end %>

第二个选项看起来很混乱,会使我的视图混乱,但如果对象不存在,我不想不显示信息:/
如果数据库中不存在对象,我还有一个路由异常处理程序重定向到根URL,但这意味着我将链接到客户路径(warehouse.customer_id),而不仅仅是客户路径(warehouse.customer)。

最佳答案

link_to_if是为类似的情况创建的。

link_to_if @contract.customer, @contract.customer_id, @contract.customer

关于ruby-on-rails - Rails link_to,如果关联对象为nil,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27934673/

10-10 16:35