Действие рендеринга Rails 3 из другого контроллера

I need to render another controller action <%= render "controller/index" %> and i get this error

Missing partial controller/index with {:formats=>[:html], :locale=>[:en, :en], :handlers=>[:rjs, :rhtml, :rxml, :erb, :builder]} in view paths "/path_to/app/views"

how can i render another controller action into a view but without sending an redirect to the client ? Я пробовал

<%=render :action => "index", :controller=>"controller" %>

, но похоже, что это не работает.

26
задан Camilo Martinez 21 April 2013 в 03:02
поделиться

2 ответа

Попробуйте сделать шаблон:

<%= render :template => "controller/index" %> 

Или файл:

<%= render :template => "#{Rails.root}/app/controllers/controller/index" %> 

И я считаю, что вы должны визуализировать его через контроллер, насколько это удобнее:

def your_action
  ...
  render :action => :index
end
30
ответ дан 28 November 2019 в 06:26
поделиться

Из Rails Guides страница :

Использование render with: action - частый источник путаницы для новичков Rails. Указанное действие используется для определения того, какое представление следует визуализировать, но Rails не выполняет никакого кода для этого действия в контроллере. Любые переменные экземпляра, которые вам требуются в представлении, должны быть установлены в текущем действии перед вызовом render.

Короче говоря, вы не можете визуализировать другое действие, вы можете визуализировать только другой шаблон. Вы можете получить общий код и переместить его в метод в контроллере приложения. Вы также можете попробовать что-то в этом роде, если вы действительно не можете структурировать свой код другим способом:

# This is a hack, I'm not even sure that it will work and it will probably
# mess up your filters (like ignore them).
other_controller = OtherController.new
other_controller.request = @_request
other_controller.some_action
20
ответ дан 28 November 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: