这是一些不起作用的简单代码:
module ApplicationHelper
def industries
industries = ['Agriculture','Food', etc.]
end
end
class User < ActiveRecord::Base
include ApplicationHelper
validates_inclusion_of :industries, :in => ApplicationHelper.industries
...
end
当使用 undefined method 'industries'
运行用户操作时,此代码失败。您知道我如何以正确的方式引用助手(或最好只是行业)吗?编辑
根据下面 Mauricio 的回答中的代码,如何在 Controller 和 View 中访问
INDUSTRIES
?我在让各个行业都可以访问时遇到了真正的麻烦,但它确实需要用于我的应用程序。 最佳答案
你应该 永远不要 做这样的事情。 ApplicationHelper 不应包含在模型中。最好的解决办法是:
class User < ActiveRecord::Base
INDUSTRIES = ['Agriculture','Food']
validates_inclusion_of :industries, :in => INDUSTRIES
end
module ApplicationHelper
def industries
User::INDUSTRIES
end
end
现在你已经以一种简单而漂亮的方式完成了。
编辑
任何您需要访问您应该使用的行业的地方:
User::INDUSTRIES
就是这样。
关于ruby-on-rails - 从 User.rb 模型访问 ApplicationHelper,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8544230/