我知道我可以在Rails中的Helper
文件夹中的helper
类中放置一个帮助器方法。然后该方法可以在任何视图中使用。我知道我可以将方法放在ApplicationController
类中,并且该方法可以在任何控制器中使用。
放置控制器和视图中经常使用的方法的适当位置在哪里?
答案 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
我认为这是一种更清晰,更可测试的方法,可以在整个应用程序中管理可重用的帮助程序。