如何在lib中使用带有Rails的控制器方法?

时间:2015-05-11 05:42:27

标签: ruby-on-rails ruby controller maintenance

我现在正在使用Rails 4.2。

我在lib目录下创建了一个模块。我想从app/controllers/applicaiont_controller.rb调用维护方法,但它失败了:

NoMethodError in ProductsController#index
undefined method `redirect_to` for #<...>

我的lib模块如:

module One
  class Display
    response = other_method
    if response.status == 200
      data = 'OK'
    else
      redirect_to_maintencance 'Maintenance ...'
    end
    data
  end
end

应用程序/控制器/ applicaiont_controller.rb

class ApplicationController < ActionController::Base
  # Other methods

  def redirect_to_maintencance(message = nil)
    redirect_to :maintencance, flash: { maintencance_message: message }
  end
end

1 个答案:

答案 0 :(得分:0)

在lib模块中使用重定向方法不是一个好方法。 将状态检查逻辑移动到控制器或帮助程序。

感谢@ jphager2。