2011-07-10 41 views
1

我怎樣才能從application.html.erb中的數據庫中獲取值?我需要爲整個項目獲取這些值。這些值將永遠留在所有頁面上。如何將valus傳遞給application.html.erb。Ruby on rails:我如何從application.html.erb中的databse獲取值?有沒有像beforeRender?

有什麼像beforeRender? 是否有像appcontroller.rb重寫操作。

感謝

+1

before_filter? - http://guides.rubyonrails.org/action_controller_overview.html#filters – krichard

回答

1

你可以把方法的應用控制器

before_filter :load_data 


def load_data 
@data = Data.all 
end 

所有的控制器繼承的ApplicationController,所以數據會不惜一切行動被加載。在所有的意見,像這樣

class ApplicationController < ActionController::Base 
     before_filter :load_application_wide_varibales 

     private 

     def load_application_wide_varibales 
     @var = Model.where :condition => "whatever" 
     end 
    end 

@var然後將可

歡呼

4

你可以使用一個應用程序範圍before_filter使用@data可能是在你的應用程序控制器中創建一個方法並聲明它是一個輔助方法。然後你可以在application.html.erb中調用該方法。例如,如果你希望能夠使用當前用戶在整個應用程序你會做這樣的事情:

class ApplicationController 
    helper_method :current_user 

    def current_user 
    @current_user ||= User.find(session[:user_id]) 
    end 
end 

然後在application.html.erb,你可以做到以下幾點:

Hello <%= current_user.name %> 

也可以使用before_filter之類的建議,但在此解決方案中,數據庫僅在必要時纔會被觸發。隨着before_filter它總是被擊中。

1

的最佳方式 - 現在你可以在你application.html.erb file

相關問題