Rails link_to_if没有正确隐藏链接

时间:2017-08-16 15:19:24

标签: ruby-on-rails hyperlink hide link-to

出于某种原因,我的link_to_if行有效,但出现在我的模型(公司)的每个节目视图中。

以下是代码:

<% @customers.each do |customer| %>
  <li>
    <%= link_to_if customer.company_id == @company.id, "#{customer.first_name} #{customer.last_name}", customer_path(customer[:id]) %>
  </li>
<% end %>

问题:我将Customer1链接到CompanyX。当我去CompanyZ时它显示Customer1,但链接不是超链接。它只是纯文本,甚至不应该出现。但是在CompanyX的观点中,链接工作正常。我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

如果您阅读了link_to_ifhttps://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to_if)的文档,则会明确说明[如果错误] 只返回该名称

在文档中,您可以发现给定的(可选)块在false情况下呈现。所以在你的情况下,你可以传递一个空块:

<%= link_to_if false, customer_path(customer[:id]) {} %>

在我看来,如果您只想在customer的一个或多个@customers(s)与@company相关联时显示链接,您应该这样做:

<% @customers.where(company_id: @company.id).each do |customer| %>
  <li>
    <%= link_to "#{customer.first_name} #{customer.last_name}", customer_path(customer[:id]) %>
  </li>
<% %>

答案 1 :(得分:1)

如果您想隐藏一些记录,您可以从控制器隐藏控制客户的公司

@customers = Company.find(:id).customers

然后在您的观看中,您可以显示它而无需进行比较

<% @customers.each do |customer| %>
  <li>
    <%= link_to "#{customer.first_name} #{customer.last_name}", customer_path(customer[:id]) %>
  </li>
<% end %>