Я не знаю, что именно вы подразумеваете под вложенным рендерингом.
Сценарий # 1
Если вы хотите, чтобы действие "index" запускалось, но шаблон "hello.html.erb ", который будет показан, вы можете сделать
def index
render :action => :hello
end
. Это отрендерит шаблон app/views/demos/hello.html.erb
(или другой формат, если вы хотите его (т.е. укажите его в URL)).
Так что render :action => :hello
- это просто ярлык.
Вы также можете сделать render :template => "hello.html.erb"
или render :file => Rails.root.join("app/views/demos/hello.html.erb")
(иногда полезно).
Сценарий # 2
Если вы хотите визуализировать этот текст, вы можете просто вызвать метод hello внутри метода index
def index
hello
end
Если вы не хотите запускать другие вещи из действия hello, вы можете отделитьэто к другому методу, например так:
def render_hello
render :text => "Hello world"
end
def index
# some other stuff going on...
render_hello
end
def hello
# some other stuff going on...
render_hello
end
Вы не можете выполнить рендеринг дважды в одном действии.
Между прочим, в URL не должно быть указано /demos/index
, а просто /demos
.Индекс - это действие по умолчанию для resources
маршрута (resources :demos
).
Пожалуйста, выберите подходящий вам сценарий (чтобы я мог удалить ненужный текст из этого ответа).