Ruby on rails从控制器访问文件

时间:2014-01-18 20:24:12

标签: ruby-on-rails ruby

如果我出错了,请告诉我我可以改变它。我在config / initializers / payload_signer.rb中有一个文件。我试图在名为device_enrollment_controller.rb的控制器中使用此文件。

PayloadSigner.sign(get_profile)

get_profile是控制器中的一个方法,它获取我需要的文件并返回它。 PayloadSigner引用其他文件。当我尝试运行它时(请记住,我确定必须在payload_signer中进行更改才能正常工作)我得到的错误是未初始化的常量DeviceEnrollmentController :: PayloadSigner。这让我相信我错误地引用了payload_signer.rb文件。我尝试过像include和load这样的东西,但到目前为止它们还没有用。

感谢任何帮助或指导。

1 个答案:

答案 0 :(得分:1)

控制器模型之前调用Rails 初始化程序。所以它不会起作用。初始化器不适用于此类用途。相反,我建议将您的代码放在控制器before_filter中。可以在ApplicationController中,也可以只在那些需要它的控制器中(例如 DeviceEnrollmentController )。像这样:

class DeviceEnrollmentController # Or ApplicationController

  before_filter :sign_payload

  protected

  def get_profile
    # Magic
  end

  def sign_payload
    PayloadSigner.sign(get_profile)
  end
end

编辑:另一个例子:

class DeviceEnrollmentController

  # The filter is only applied to the sign action
  # (that's what the :only parameter does).
  before_filter :sign_payload, :only => [:sign]

  # Browsing to /show, you render this magic button of yours.
  def show
    # Render page that holds the button
  end

  # The magic button is bound to the /sign route.
  # Clicking on the button calls this action.
  def sign
    # When you get here, the #sign_payload method
    # has already been called.
  end

  protected

  def get_profile
    # Magic
  end

  def sign_payload
    PayloadSigner.sign(get_profile)
  end
end