如何在常规Ruby类中包含rails ApplicationHelper模块

时间:2015-04-03 21:51:54

标签: ruby-on-rails ruby-on-rails-4

我在Rails应用程序的lib目录中有一个类,我希望能够在该类中使用我在ApplicationHelper中创建的帮助程序。我有以下内容:

module ApplicationHelper

  def works
    "Yay!"
  end   

  def breaks
    session[:username]
  end
end

class MyClass
  include ApplicationHelper
end

以下作品

MyClass.new.works 

这打破了

MyClass.new.breaks

我收到有关Rails尝试将session委托给controller.session的消息,但由于controller为零,因此无法执行此操作。

包含ApplicationHelper的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

问题不在于包含帮助程序,而在于访问会话。

在正常情况下,ApplicationHelper会自动包含在所有控制器中,some of the ActionView methods - including session - are delegated to the controller会出现在这种情况下。

当包含在普通的ruby类中时,没有controller;所以对这些方法的任何调用都会抛出一个错误,说控制器是零。

不确定为什么在普通的ruby类中需要会话信息。