рельсы - одно действие, много шаблонов - как это сделать? - PullRequest
2 голосов
/ 02 февраля 2012

Позволяет использовать действие PeopleController # show в качестве примера.Что делать, если мне нужно отобразить человека несколькими различными способами в зависимости от приложения.У меня есть несколько вариантов, основанных на формате запроса (js, html), но мне действительно нужно больше.

Я мог бы выполнять различные действия контроллера, но я предпочитаю сохранять свои контроллеры базовыми, если у меня нет разумной альтернативы.Другая идея заключалась бы в том, чтобы иметь оператор case и параметр шаблона, но это также кажется утомительным (особенно, если определенные представления относятся к определенным типам пользователей).

Мой вопрос таков: каков путь к рельсам?сделать это?

people_controller.rb

def show
  set_partial
  respond_to do |format|
    format.js
  end
end

protected
def set_partial
  @template = case params[:template]
                when 'small' then 'small_view'
                when 'quick' then 'quick_view'
                else
                  'full_view'
              end
end

people / show.js.erb

$('body').append("<%= escape_javascript(render partial: @partial) %>")

1 Ответ

3 голосов
/ 02 февраля 2012

Привет, друг, это может помочь тебе.

def show
  respond_to do |format|
   if (condition)
    format.js { render :template => "small_view" }
    #renders small_view.js.erb
    format.html { render :template => "small_view" }
    #renders small_view.html.erb
   elsif (condition)
    format.js { render :template => "quick" }
    format.html { render :template => "quick" }
   elsif (condition)
    format.js { render :template => "full_view" }
    format.html { render :template => "full_view" }
   else
    format.html
    format.js
   end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...