изменить макет при изменении поля выбора
-
20-08-2019 - |
Вопрос
Я хочу визуализировать частичную информацию в зависимости от выбора в поле выбора.Это выглядит тривиально, но я не могу найти пример.
Вся помощь очень ценится.
С уважением
Решение
Если вы просто пытаетесь отобразить частичную часть на странице, на которую отправляется форма,
<%= render :partial => params[:your_selectbox_value_matching_the_partial_you_want] %>
Итак, если у вас было поле выбора, например
<select name='the_partial'>
<input value="partial1">Some Partial</input>
<input value="partial2">Another Partial</input>
</select>
Вам нужно будет визуализировать
<%= render :partial => params[:the_partial] %>
Предполагая, что у вас есть _partial1.html.erb и parts2.html.erb в папке просмотра.
Другие советы
Я бы начал примерно с этого:
app/views/_layout_selector.html.erb:
<form action="<%= request.request_uri -%>">
<select name='layout'>
<input value="blue">Blue</input>
<input value="pink">Pink</input>
<input value="green">Green</input>
</select>
</form>
app/views/layouts/blue.html.erb:
<html>
...
<%= render :partial => '/layout_selector' %>
...
</html>
(/app/views/layouts/pink.html.erb and green.html.erb similar)
app/controllers/application.rb:
class ApplicationController < ActionController::Base
DEFAULT_LAYOUT = 'blue'
layout :pick_layout
...
private
def pick_layout
params[:layout] || DEFAULT
end
end
Не связан с StackOverflow