Ruby on rails 对Rails中的代码进行干涸响应

Ruby on rails 对Rails中的代码进行干涸响应,ruby-on-rails,ruby,ruby-on-rails-3,dry,respond-to,Ruby On Rails,Ruby,Ruby On Rails 3,Dry,Respond To,我有几个动作(我们称之为动作a、动作b等) 在每个操作中,我想检查用户是否已登录,如果没有,respond\u to块,如下所示 format.js { if current_user.nil? render partial: 'some_partial', handler: [:erb], formats: [:js] end } 对于一个操作来说这是好的,但是对于很多操作来说不是,因为会有很多重复的代码,这些

我有几个动作(我们称之为动作a、动作b等)

在每个操作中,我想检查用户是否已登录,如果没有,
respond\u to
块,如下所示

 format.js {
          if current_user.nil?
            render partial: 'some_partial', handler: [:erb], formats: [:js]
          end
        }
对于一个操作来说这是好的,但是对于很多操作来说不是,因为会有很多重复的代码,这些代码会做完全相同的事情,它不是很漂亮或者不可维护

有没有办法把它放在某个地方,这样我就可以重用这段代码,而不是在每次需要的操作中都重写它?

使用before\u filter(rails使用before\u filter)(rails请继续阅读。这些都是为了对此有所帮助

您的具体问题是过滤器通常用于什么。请参阅

更一般地说,这只是ruby代码,因此您可以将所有内容重构为方法:

def do_stuff_with(partial_name, format)
  if current_user.nil?
    render partial: partial_name, handler: [:erb], formats: [format]
  end
end


format_js { do_stuff_with('some_partial', :js) }
请仔细阅读。这些都是为了帮助你

您的具体问题是过滤器通常用于什么。请参阅

更一般地说,这只是ruby代码,因此您可以将所有内容重构为方法:

def do_stuff_with(partial_name, format)
  if current_user.nil?
    render partial: partial_name, handler: [:erb], formats: [format]
  end
end


format_js { do_stuff_with('some_partial', :js) }

非常简单的解决方案您可以在controller
def responsed\u中编写一个方法,将响应代码添加到end
并在controller action中调用它使其成为私有方法非常简单的解决方案您可以在controller
def responsed\u中编写一个方法,将响应代码添加到end
并在controller action中调用它使其成为私有方法dcan我可以在before_过滤器中有js响应(用户是否未登录?)我可以在before_过滤器中有js响应(用户是否未登录?)我可以在before_过滤器中有js响应(用户是否未登录?)我可以在before_过滤器中有js响应(用户是否未登录?)
def do_stuff_with(partial_name, format)
  if current_user.nil?
    render partial: partial_name, handler: [:erb], formats: [format]
  end
end


format_js { do_stuff_with('some_partial', :js) }