3

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

在哪里放置控制器和视图中经常使用的方法的合适位置?

4

3 回答 3

8

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

例如:

class ApplicationController

  helper_method :this_is_really_useful

  def this_is_really_useful
    # Do useful stuff
  end

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

于 2013-09-12T22:24:10.383 回答
7

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

helper_method :my_method

从控制器。

于 2013-09-12T22:22:13.270 回答
0

我把你描述的助手放在我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包含在.lib/config/application.rb

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

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

于 2013-09-13T00:17:20.473 回答