在Rails中的控制器和视图中使用的辅助方法
我知道我可以在Rails中的helper
文件夹中的Helper
类中放置一个帮助器方法。 然后该方法可以在任何视图中使用。 我知道我可以在ApplicationController
类中放置方法,并且该方法可以在任何控制器中使用。
放置控制器和视图中经常使用的方法的适当位置在哪里?
你可以将它放在控制器中并调用:
helper_method :my_method
来自控制器。
您可以将一个方法放在一个控制器中,然后在控制器中调用helper_method
来指示该方法是否可用,就好像它也在一个帮助器中一样。
例如:
class ApplicationController helper_method :this_is_really_useful def this_is_really_useful # Do useful stuff end
然后,此方法可用于所有控制器和所有视图。
我把你描述的帮助器放在我的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
上创建一个新的初始化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
我认为这是一种更清晰,更可测试的方法来管理整个应用程序中的可重用帮助程序。