Да, вы можете, если вы используете макеты в макетах. (Требуется, чтобы вы создали еще один файл, но он будет СУХИМ.) Я не уверен, что это то, что вы хотите, но вот как это работает.
Ваш вложенный макет может вызвать yield
(даже если у вас есть обычный макет, который также вызывает yield
. Для js ваш стек рендеринга будет продолжен:
[шаблон]> [частичное расположение]> [частичное]
Ваш контроллер будет вызывать вашу обычную команду рендеринга (или ни одной, если она неявная). (Я не знаю, где вы хотите объявить, какая часть должна быть визуализирована, поэтому я просто выбрал здесь.):
def index
@partial = params[:partial] || 'some_partial'
respond_to do |format|
format.js render :template => 'my_template'
end
end
Ваш шаблон вместо вызова частичного (some_partial
) будет вызывать частичный шаблон, который, в свою очередь, вызывает частичный:
# my_template
/* Some js ... */
$("#working_div").html("<%= render :layout => "nested_layout", :partial => @partial %>")
/* Some more js ... */
Ваш вложенный фрагмент может затем вызвать метод yield
:
# nested_partial
/* Some js ... */
<%= yield %>
/* Some more js ... */