Как я могу явно объявить представление из контроллера Rails? - PullRequest
20 голосов
/ 07 ноября 2008

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

Прямо сейчас у меня есть:

def some_action
  .. do something ...
  respond_to do |format|
    format.xml
  end
end

... тогда он вызывает мое представление some_action.xml.builder. Как я могу назвать какой-то другой вид? Есть ли параметр в response_to, который я пропускаю?

Спасибо

JP * * +1010

Ответы [ 6 ]

39 голосов
/ 07 ноября 2008

Вы можете сделать что-то вроде следующего, используя render:

respond_to do |format|
    format.html { render :template => "weblog/show" }
end
14 голосов
/ 07 ноября 2008

См. Раздел Рендеринг документации ActionController :: Base о различных способах управления тем, что рендерить.

Вы можете указать Rails визуализировать определенный вид (шаблон) следующим образом:

# Renders the template located in [TEMPLATE_ROOT]/weblog/show.r(html|xml) (in Rails, app/views/weblog/show.erb)
  render :template => "weblog/show"

# Renders the template with a local variable
  render :template => "weblog/show", :locals => {:customer => Customer.new}
5 голосов
/ 30 апреля 2013

Или даже проще, так как Rails> 3.0 :

render "edit"
5 голосов
/ 07 ноября 2008

Вы также можете передать: действие или: контроллер, если это более удобно.

respond_to do |format|
    format.html { render :action => 'show' }
end
2 голосов
/ 30 июля 2014

Вы можете изменить внутренний lookup_context контроллера, выполнив это в вашем контроллере

before_filter do
  lookup_context.prefixes << 'view_prefix'
end

и контроллер попытается загрузить view/view_prefix/show.html при ответе на запрос show после поиска всех других префиксов представления в списке. Список по умолчанию обычно application и имя текущего контроллера.

class MagicController
  before_filter do
    lookup_context.prefixes << 'secondary'
  end

  def show
    # ...
  end
end

app.get '/magic/1`

Этот GET запрос будет искать представление в следующем порядке:

  • view/application/show.erb
  • view/magic/show.erb
  • view/secondary/show.erb

и использовать первый найденный вид.

0 голосов
/ 09 ноября 2008
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...