2014-11-23 3 views
2

Можно ли отнести частичное как макет?Оказывает частичное как макет

В настоящее время у меня есть частичный _show.html.erb под app/views/users. В некоторых других контроллерах я попытался включить layout 'users/show', чтобы использовать это частичное как макет.

Однако, по-видимому, Rails, похоже, ищет макеты в каталоге layouts/. И я получаю такую ​​ошибку, как:

Template is missing 

Missing template layouts/users/show .... 

Любые предложения?

+0

Вы правы, метод макета только просматривает папку макетов. Вместо этого я предлагаю использовать частично. Зачем вам нужен макет вместо частичного? – sealocal

+0

@sealocal Спасибо за ваш ответ. Я хочу привести один файл вида в другой файл вида (частичный). –

+0

Я не думаю, что это возможно. Я бы рекомендовал прочитать «[Understanding yield] (http://guides.rubyonrails.org/layouts_and_rendering.html#structuring-layouts) в Rails Guides, если вы еще этого не сделали. Как вы сказали,' layout' ищет ' папка layouts' и 'yield' заменяется представлением, вызываемым действием контроллера.' yield' также может возвращать блок содержимого, но не частичный. – sealocal

ответ

0

Я думаю, что если вы просто хотите, чтобы включить частичный в другой точке зрения вы должны пользователь render:

<%= render partial: 'users/show' %> 

Возможно, в действии вашего другого контроллера у вас есть:

@user = @some_object.user 

Вам нужно пройти в @user к частичным. Вы можете обратиться к локальной переменной, user, в вашем users/show частичное и передать в переменной экземпляра:

<%= render partial: 'users/show', locals: {user: @user} %> 

Вы также можете использовать частные и компоновки варианты вместе с тем, что частичное воздаст внутри заданное раскладка. Например, можно указать, что

<%= render partial: "contact_info", layout: "users/show" %> 

Это рассказать contact_info частичное, чтобы сделать внутри макета, найденного в app/layouts/users/show.html.erb.

+0

Спасибо за редактирование, но не совсем то, что я имел в виду. Я отправлю его позже. –

+0

Sure , Мне действительно интересно узнать, какое решение вы придумали. – sealocal

Смежные вопросы