这是一些不起作用的简单代码:

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/

10-13 02:20