изменить макет при изменении поля выбора - PullRequest
2 голосов
/ 02 февраля 2009

Я хочу визуализировать частичное в зависимости от выбора в поле выбора. Это выглядит тривиально, но я не могу найти пример.

Вся помощь очень ценится.

С уважением

Ответы [ 2 ]

2 голосов
/ 02 февраля 2009

Если вы просто пытаетесь отобразить фрагмент на странице, которую отправляет форма,

<%= 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 и part2.html.erb в папке просмотра

1 голос
/ 02 февраля 2009

Я бы начал с чего-то вроде этого:

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
...