如何link_to具有特定属性的所有对象?

时间:2015-12-28 22:32:47

标签: ruby-on-rails ruby-on-rails-4

所以我有一个Connection模型,它具有request_status属性。 request_status可以是以下四个选项之一:accepted, pending, rejected, removed

在我的Connections#Index页面上,如果没有为我的控制器和所有爵士乐中的每个状态和专用操作创建路线,我想要做的只是创建4个标签,当我点击每个标签时,它会列出所有具有request_status

的连接

想象一下,我有这些链接:

    <li class="profile__navigation-tab is-active"><a href="/user/videos">Active</a></li>
    <li class="profile__navigation-tab"><a href="/user/videos">Pending</a></li>
    <li class="profile__navigation-tab"><a href="/user/videos">Rejected</a></li>
    <li class="profile__navigation-tab"><a href="/user/videos">Removed</a></li>

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

作为link_to你需要这样的东西:

= link_to "Active", connections_path( request_status: :active )

然后,不是重复每一项,你可以这样做:

<% %w[active pending rejected removed].each do |status| %>
  <% is_active = "is-active" if params[:request_status] == status %>
  <%= content_tag :li, link_to( status.titleize, connections_path( request_status: status )), class: ["profile__navigation-tab", is_active].compact %>
<% end %>

答案 1 :(得分:1)

您可以将索引操作更改为类似于:

@connections = <Your current logic to get all connections>
@connections = @connections.where(request_status: params[:request_status]) if params[:request_status])

然后,您所要做的就是为您的网址添加额外的参数:

<li class="profile__navigation-tab is-active"><a href="/user/videos?request_status=active">Active</a></li>
<li class="profile__navigation-tab"><a href="/user/videos?request_status=pending">Pending</a></li>
<li class="profile__navigation-tab"><a href="/user/videos?request_status=rejected">Rejected</a></li>
<li class="profile__navigation-tab"><a href="/user/videos?request_status=removed">Removed</a></li>