我在哪里定义多个控制器使用的辅助方法时遇到了一些麻烦。
我将此方法解压缩到自己的模块中:
module ColumnMapHelper
def drop_down_upload_file_types
options = [["Use the RoyaltyZone Sales Upload Template", "RZ"], ["Use my own data file (Quickbooks, iTunes, etc)", "Create New"]]
...
select_tag "file_upload_type", options_for_select(options, default), :id=>"upload_file_type_selection"
end
end
我将它包含在控制器中并将其作为辅助方法公开:
class SalesDataController < ApplicationController
before_filter :login_required, :except => [:download]
include ColumnMapHelper
helper_method :drop_down_upload_file_types
当它在我的控制器的助手(app / helpers / sales_data_helper.rb)中定义时,它很好,但是现在我在视图中调用了我的帮助方法时出现了这个错误:
undefined method `options_for_select' for #<SalesDataController:0x109bbbd18>
我需要包含一些模块吗?分享这样的助手的最佳方式是什么?
答案 0 :(得分:1)
如果您只在视图中使用帮助程序,那么您不需要执行任何操作,因为默认情况下包含应用程序/帮助程序中的所有内容。
如果您希望与视图共享current_user等方法,则希望在控制器中使用helper_method。
答案 1 :(得分:0)
options_for_select
是一种视图方法,在控制器中不可用。但是,没有理由在控制器中使用它。
如果将ColumnMapHelper
文件保存在/app/helpers
文件夹中,drop_down_upload_file_types
将自动提供给您的所有视图(只要您的应用默认包含所有帮助程序)。