Rails 3 View helper method in Model

前端 未结 3 1572
礼貌的吻别
礼貌的吻别 2020-12-09 21:23

I have a class method in my model, and I need to access a method from one of my view helpers. Currently I am including include TalkHelper, but I still get a NoM

相关标签:
3条回答
  • 2020-12-09 22:14

    In your model, you can do something like the following:

    ApplicationController.helpers.your_helper_method
    

    OR

    YourController.helpers.your_helper_method
    

    The best solution is to refactor your code so that you don't need to call view helper code at all from models. It is not the RoR way. As others point out, you could extract the helper code to lib folder.

    See this for more info:

    http://railscasts.com/episodes/132-helpers-outside-views

    0 讨论(0)
  • 2020-12-09 22:16

    If you need the helper in a class method you'd need to extend it, not include it.

    module TalkHelper
      def woo; 'hoo' end
    end   
    
    class MyClass
      extend TalkHelper
    
      def self.boo; woo end
    end
    
    MyClass.boo #=> 'hoo'
    

    Just be careful with helpers outside of the view context, as helpers may depend on controller, or something else from the context of a request, which will not be available in your model.

    0 讨论(0)
  • 2020-12-09 22:18

    You may place helper in your lib folder and include them anythere. Like this: lib/some_helper.rb

    module SomeHelper
      def somedef
        #your code there
      end
    end
    
    0 讨论(0)
提交回复
热议问题