在Rails中的控制器和视图中使用的辅助方法

时间:2013-09-12 22:05:09

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-4 helpermethods

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

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

3 个答案:

答案 0 :(得分:7)

您可以将其放入控制器并致电:

helper_method :my_method

来自控制器。

答案 1 :(得分:7)

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

例如:

class ApplicationController

  helper_method :this_is_really_useful

  def this_is_really_useful
    # Do useful stuff
  end

此方法随后可供所有控制器和所有视图使用。

答案 2 :(得分: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

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