未定义的方法`options_for_select'

时间:2013-02-15 23:26:00

标签: ruby-on-rails ruby helpers

我在哪里定义多个控制器使用的辅助方法时遇到了一些麻烦。

我将此方法解压缩到自己的模块中:

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>

我需要包含一些模块吗?分享这样的助手的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

如果您只在视图中使用帮助程序,那么您不需要执行任何操作,因为默认情况下包含应用程序/帮助程序中的所有内容。

如果您希望与视图共享current_user等方法,则希望在控制器中使用helper_method。

答案 1 :(得分:0)

options_for_select是一种视图方法,在控制器中不可用。但是,没有理由在控制器中使用它。

如果将ColumnMapHelper文件保存在/app/helpers文件夹中,drop_down_upload_file_types将自动提供给您的所有视图(只要您的应用默认包含所有帮助程序)。