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" %>
, но похоже, что это не работает.
Попробуйте сделать шаблон:
<%= render :template => "controller/index" %>
Или файл:
<%= render :template => "#{Rails.root}/app/controllers/controller/index" %>
И я считаю, что вы должны визуализировать его через контроллер, насколько это удобнее:
def your_action
...
render :action => :index
end
Из 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