所以我有一个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>
最好的方法是什么?
答案 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>