Ruby 1.9.3 + Rails 3.2.8
我有一个视图,在我的app中的每个页面上呈现在partial:
中<span id="sync-time">
<%= @sync.dropbox_last_sync.strftime('%b %e, %Y at %H:%M') %>
</span>
为了使用我的syncs
模型并且可以访问dropbox_last_sync
方法,我必须在整个应用中将其包含在每个控制器中。例如:
class EntriesController < ApplicationController
def index
@sync = current_user.sync
end
end
...
class CurrenciesController < ApplicationController
def index
@sync = current_user.sync
end
end
...等
有没有办法让 syncs
模型可以通过以某种方式将其包含在我的应用程序控制器中随处可用?
答案 0 :(得分:2)
您应该能够在应用程序控制器中添加before_filter:
before_filter :setup_sync
def setup_sync
if current_user
@sync = current_user.sync
end
end
您需要注意,setup_sync过滤器会在您用于设置current_user的任何代码之后运行。这可能是另一个before_filter虽然如此,只要您在当前用户过滤器之后before_filter :setup_sync
声明了,它就能正常工作。
答案 1 :(得分:0)
这样更好:
class ApplicationController < ActionController::Base
before_filter :authenciate_user!
before_filter :index
def index
@sync = current_user.sync
end
end
您总是使用current_user
,因此您需要before_filter :authenciate_user!
此处以及另一个之上。