Как оформить разные коллекции в одном месте?
Предположим, у меня есть модель под названием 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>