Model Access throughout Entire Rails Application
Ruby 1.9.3 Rails 3.2.8
我有一个视图,它在我的应用程序的每个页面上都呈现在一个局部:
1 2 3 | <span id="sync-time"> <%= @sync.dropbox_last_sync.strftime('%b %e, %Y at %H:%M') %> </span> |
为了使用我的
1 2 3 4 5 | class EntriesController < ApplicationController def index @sync = current_user.sync end end |
...
1 2 3 4 5 | class CurrenciesController < ApplicationController def index @sync = current_user.sync end end |
...等
有没有一种方法可以让
你应该可以在你的应用控制器中添加一个 before_filter:
1 2 3 4 5 6 7 | before_filter :setup_sync def setup_sync if current_user @sync = current_user.sync end end |
您需要注意 setup_sync 过滤器在您用于设置 current_user 的任何代码之后运行。这可能是另一个 before_filter 但只要您在当前用户过滤器之后声明了
这样更好:
1 2 3 4 5 6 7 8 | class ApplicationController < ActionController::Base before_filter :authenciate_user! before_filter :index def index @sync = current_user.sync end end |
你一直在使用