2014-01-22 3 views
0

Я пытаюсь показать меню вкладки навигации от «menupersonas» контроллера в файл под названием «top_layout.html.erb»Получить информацию от родительского контроллера

Я пытаюсь показать, что меню с рендер но от "персон" и "personascorreos" просмотров:

"/ персоны/4/редактировать" и "/personascorreos/index.html.erb"

таким образом:

<%= render file: "menupersonas/top_layout" %> 

Я разъясняю что "personas" has_ многие «personascorreos»

поэтому ссылка в меню (top_layout.html.erb), что мне нужно, чтобы показать это «link_to (persona_personastelefonos_path (персоны))»

Но я получил эту ошибку: «неопределенный локальные переменную или метод `персоны»

Я думаю, что знает, что проблема заключается в том, что @personascorreos = @persona.personascorreos.all не определена в menupersonas контроллере

Но мой вопрос: есть ли способ вызвать эту информацию из personascorreos без необходимости определения его снова в menupersonas?

+0

Я рекомендую вам всегда настраивать данные с контроллеров. Установлен ли '@ persona' для каждого случая, когда вам нужно' top_layout'? –

+0

Нет, @persona не установлен, но это то, что я хочу сделать, есть ли способ сделать это с необходимостью определять персону в каждом контроллере или как ее определить? Я не знаю, как это сделать, потому что это должно быть как «localhost: 3000/personas/1/personascorreos», как мне получить идентификатор? – Andru1989

+0

Вы должны установить @persona с каждого контроллера. (Вы даже можете поделиться кодом, который устанавливает @persona, помещая его в модуль и смешивая его с каждым контроллером). Для запроса «/ personas/1/personascorreos» идентификатор Persona должен быть доступен в параметрах Hash, например 'params [: persona_id]'. Взгляните на свои маршруты («рейк-маршруты»), если что-то неясно. Также здесь очень хорошая документация http://guides.rubyonrails.org/routing.html#nested-resources. –

ответ

0

Если вы визуализируете представление из другого (как частичное), метод контроллера не вызывается.

Я думаю, что вам не хватает проезда местных жителей при визуализации представления. Попробуйте:

<%= render file: "menupersonas/top_layout", persona: @persona %>

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

GL & HF.

+0

Я не знаю, что происходит, но продолжайте ту же проблему «неопределенная локальная переменная или метод' persona » – Andru1989

+0

@ Andru1989 Лицо отсутствует в вашем представлении top_layout, не так ли? Где вы это определяете? Предполагается, что это персонаж, из которого персоналист? (так как вы вызываете его из индекса). Можно ли определить локальную переменную, как я предложил? (возможно, не 'persona: @ persona', а другое выражение, например' persona: @ correospersonas.persona'. Каково намеренное поведение? Для чего вы используете это меню? – rlecaro2

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