0

複数のコントローラーで使用されるヘルパー メソッドを定義する場所に問題があります。

このメソッドを独自のモジュールに抽出しました。

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>

含める必要があるモジュールはありますか? このようなヘルパーを共有する最良の方法は何ですか?

4

2 に答える 2

1

ビューでヘルパーのみを使用している場合は、アプリ/ヘルパーのすべてがデフォルトで含まれているため、何もする必要はありません。

ビューと共有したいcurrent_userのようなメソッドがある場合は、コントローラーでhelper_methodを使用します。

于 2013-02-16T00:00:06.993 に答える
0

これoptions_for_selectはビューメソッドであり、コントローラーでは使用できません。ただし、コントローラーで使用する理由はありません。

ColumnMapHelperファイルを/app/helpersフォルダーに保存するdrop_down_upload_file_typesと、すべてのビューで自動的に使用可能になります(アプリにデフォルトですべてのヘルパーが含まれている場合)。

于 2013-02-15T23:58:26.840 に答える