2010-02-16 3 views
2

Я попытался написать рендер в действии, но поведение макета по-другому, почему?Как рельсы выполняют работу в контроллере? Почему что-то не использует макет?

def show 
    # assuming we have a partial in app/views/shared/_panel_show.html.erb 
    #render "shared/_panel_show" # have layout 
    #render "/shared/_panel_show" # without layout 
    #render "shared/panel_show" # Template is missing 
    #render :partial => "shared/panel_show" # without layout 
    render :partial => "/shared/_panel_show",:layout => "application" # have layout 
end 

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

+0

Как это отличается? Вы не должны делать: render: partial => "/ shared/panel_show",: layout => "application"? – marcgg

+0

Да, могу. Но я хочу использовать определенный контроллер. Я не хочу изменять многие места, когда меняю глобальный макет. – allenwei

ответ

3

Вся часть частичной части состоит в том, что она лишь отображает часть представления и отображает ее без макета.

Я бы предложил создать новое представление (и действие в нашем контроллере), скажем, shared/full_panel_show, которое просто отображает частичное.

<%= render :partial => 'shared/panel_show' %> 

Теперь в контроллере визуализация нового вида:

def show 
    render :action => 'shared/full_panel_show' 
end 

В зависимости от того, что вы легирования с точкой зрения шоу, вы могли бы просто вынести частичный от его вида вместо.

+0

Как объяснить #render "shared/_panel_show" # есть макет – allenwei

0

У меня есть решение для визуализации с частичной компоновкой в ​​контроллере

render 'shared/_panel_show', layout: "layouts/application" 

просто удалить «частичный» метод затем добавить подчеркивание.