【发布时间】:2015-05-11 05:42:27
【问题描述】:
我现在使用的是 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
app/controllers/applicaiont_controller.rb
class ApplicationController < ActionController::Base
# Other methods
def redirect_to_maintencance(message = nil)
redirect_to :maintencance, flash: { maintencance_message: message }
end
end
【问题讨论】:
-
为什么
#<ProductsController>会抛出这个错误?如果你只是想要另一个redirect_toish 助手,也许你可以在app/helpers/some_helper.rb中定义它。 -
因为我想从 products_controller 使用 lib 目录下的那个模块。
-
然后包含
ProductsController的代码。您提供的代码与错误无关。 -
这应该在辅助方法中。现在您的代码在类定义中,因此无法调用它。它只会执行一次(当另一个文件需要它时),然后你可能会得到一堆名称或没有方法错误。
-
@jphager2 谢谢。我已将 redirect_to 方法移至控制器。你能把它写成答案吗?我会接受的:)
标签: ruby-on-rails ruby controller maintenance