Как оформить разные коллекции в одном месте?

Предположим, у меня есть модель под названием Animal. Эта модель содержит тип атрибута enum с двумя возможными состояниями.

class Animal < ActiveRecord::Base
  enum kind: [ :cat, :dog ]
end

Затем в моем контроллере я создаю соответствующие коллекции переменных экземпляра.

class AnimalsController < ApplicationController
  def index
    @cats = Animal.cat
    @dogs = Animal.dog
  end
end

На мой взгляд, я получил две ссылки и две коллекции.

<h1>Animals</h1>

<b><%= link_to 'List Cats' %></b>
<b><%= link_to 'List Dogs' %></b>

<%= render partial: 'animals/cat', collection: @cats, as: :cat %>
<%= render partial: 'animals/dog', collection: @dogs, as: :dog %>

Какой предпочтительный способ отображения первой коллекции вместо второй или второй вместо первой в том же месте в зависимости от нажатой ссылки? Как это сделать?

1 ответ

Решение

Вы можете написать следующий код для переключения между различными списками

<%= link_to "List Cats", animals_path(:cat => true) if params[:dog] %>
<%= link_to "List Dogs", animals_path(:dog => true) if params[:cat] %>

<div id="list">
 <% if params[:cat] == true %>
  <%= render partial: 'animals/cat', collection: @cats, as: :cat  %>
 <% elsif params[:dog] == true  %>
  <%= render partial: 'animals/dog', collection: @dogs, as: :dog  %>
 <% end %>
</div>
Другие вопросы по тегам