Итак, у меня есть модель Connection, у которой есть атрибут request_status. Это request_status может быть одним из 4 вариантов: 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
marcamillion 29 Дек 2015 в 01:32

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 %>
2
smathy 28 Дек 2015 в 23:08

Вы можете изменить действие индекса на что-то подобное:

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

Тогда все, что вам нужно сделать, это добавить дополнительный параметр к вашим URL-адресам:

<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>
1
BroiSatse 28 Дек 2015 в 22:42