出于某种原因,我的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的观点中,链接工作正常。我在这里做错了什么?
答案 0 :(得分:1)
如果您阅读了link_to_if
(https://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 %>