要在控制器中使用的帮助程序方法和 Rails 中的视图



我知道我可以在 Rails 的 helper 文件夹中的 Helper 类中放置一个辅助方法。然后,可以在任何视图中使用该方法。我知道我可以将方法放在ApplicationController类中,并且该方法可以在任何控制器中使用。

在哪里放置控制器

和视图中经常使用的方法的合适位置?

可以将方法放入控制器中,然后在控制器中调用helper_method以指示此方法可用,就像在帮助程序中一样。

例如:

class ApplicationController
  helper_method :this_is_really_useful
  def this_is_really_useful
    # Do useful stuff
  end

然后,此方法将可用于所有控制器和所有视图。

您可以将其放入控制器并调用:

helper_method :my_method

从控制器。

我将您在lib/目录中的模块中描述的帮助程序放在一起。给定一些MyApp应用程序,这将进入app/lib/my_app/helpers.rb,看起来像

module MyApp
  module Helpers
    extend self
    def some_method
      # ...
    end 
  end
end

接下来,您必须需要此模块。在config/initializers/my_app.rb创建一个新的初始值设定项,如下所示

require 'my_app'

并确保config.autoload_paths包含config/application.rb中的lib/目录。

config.autoload_paths += Dir["#{config.root}/lib",
                             # other paths here...
                            ]

最后,在您想要使用它的任何位置包含该模块。任何地方

app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  include MyApp::Helpers

app/helpers/application_helper.rb

module ApplicationHelper
  include MyApp::Helpers

我认为这是一种更干净、更可测试的方法,用于管理整个应用程序中的可重用助手。

最新更新