Зависит от того, насколько похожи эти представления, что я хотел бы сделать, это создать партиалы для каждого представления, а затем в главном представлении я вызываю правильное в зависимости от свойства.Скажем, у вас есть функция в application_helper
which_view
в вашем index
, вы можете написать что-то вроде этого:
<!-- your index -->
<%= render which_view == :box ? 'index_box' : 'Index_list' %>
Я предпочитаю предыдущее, но если у вас мало изменений, вы можете пойти на что-то вроде:
<% if session[:view_type] == 'box' %>
<!-- box content -->
<% else %>
<!-- list content -->
<% end %>
** РЕДАКТИРОВАТЬ **
выполнить действие:
# application_controller.rb
def set_view_type # TODO: refactor
session[:view_type] = params[:view_type]
redirect_to :back
end
установить маршруты:
# routes.rb
match '/set_view_type' => 'application#set_view_type', :as => :set_view_type
написать свою форму:
<!-- _view_type_selection.html.erb -->
<%= form_tag set_view_type_path do %>
<%= radio_button_tag :view_type, :box, session[:view_type] == 'box' %>
<%= radio_button_tag :view_type, :list, session[:view_type] == 'list' %>
<%= submit_tag 'select' %>
<% end %>
Не лучшая практика, но она работает!