微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – Rails中的全局控制器变量

我有一个ChatController和一个@user变量.在主页面上,我显示@ user.name.我也有破坏和创建与ajax一起使用的方法,所以当我从聊天中删除一条消息时,@ user变为零.为了防止在nil对象上调用name的问题,我可以在每个方法添加@ user = User.find_by_id(:user_id).但如果我有很多方法,这就变得乏味了.我可以声明@ user = User.find_by_id(:user_id)一次并干掉我的代码吗?

解决方法

是的,这是在before_filter( Documentation)中完成的.

就像是:

class ChatController < ActionController::Base
  before_filter :find_user


  private
  def find_user
    @user ||= User.find_by_id(params[:user_id])
  end
end

您也可以考虑使用Inherited Resources为您自动执行此操作.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐