2013-01-26 3 views
1

У меня есть модель контроллера для ресурса страниц. мне нужно, чтобы иметь возможность доступа имена страниц и страниц и link_to внутри Application.html.erbКак получить доступ к атрибутам модели и контроллера изнутри application.html.erb?

Я попытался рендеринга навигации частично. Но вы не можете получить доступ к контроллеру из частичного. Мне нужно иметь возможность отображать навигационную панель, которая имеет доступ к переменной @pages, поэтому я могу ее пропустить.

Каков наилучший способ для этого?

ответ

2

Внутри вашего ApplicationController, app/controllers/application_controller.rb

class ApplicationController < ActionController::Base 
    protect_from_forgery 

    before_filter :get_pages 

    protected 

    def get_pages 
    @pages ||= Page.all 
    end 

end 

Таким образом, вы можете использовать переменную @pages экземпляра из любой точки зрения.

Используя memoization с помощью оператора ||=, вы назначаете переменную только тогда, когда она вам нужна, поэтому вам не нужно беспокоиться о вызове этого метода каждый раз.

+0

+1 избили меня :) – gef

+0

Красиво сделано, даже добавлено кэширование переменных там, чтобы удостовериться, что он назначает его только если он еще не установлен. Так будет ли это работать в частичной навигации? Частично все еще вид? – user1951237

+0

Правильно, это будет работать в любом частичном режиме. Это решение, которое я использовал в своих проектах. – depa

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