2012-02-22 4 views
0

На моем сайте пользователь может создать новое сообщение с любой страницы. Я не уверен, где поставитьRails Instance Variable Location

@var = Model.new 

, так как он не соответствует определенному контроллеру. Какова наилучшая практика для этой ситуации? Хотел бы я создать его в контроллере приложения? Я полагаю, что я не должен инициализировать его в самом представлении.

+0

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

ответ

2

Да, вы должны создать before_filter в своем ApplicationController, который инициализирует @var, что необходимо.

class ApplicationController < ActionController::Base 
    before_filter :initialize_common_components 

    # ... 

    private 
    def initialize_common_components 
     @var = Model.new 
    end 
end 
+0

Хорошо, спасибо! Как только пройдут 11 минут, я отвечу. – Ian

+0

Добавил немного кода для того, как я это делаю * (используя частный метод) * – deefour

+0

И вы можете пропустить его и для определенного контроллера. by skip_before_filter: initialize_common_components на этом конкретном контроллере. – Jak

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