当前位置 : 主页 > 编程语言 > ruby >

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

来源:互联网 收集:自由互联 发布时间:2021-06-23
我有一个ChatController和一个@user变量.在主页面上,我显示@ user.name.我也有破坏和创建与ajax一起使用的方法,所以当我从聊天中删除一条消息时,@ user变为零.为了防止在nil对象上调用name的问
我有一个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为您自动执行此操作.

网友评论