2013-02-15 1 views
0

У меня возникли проблемы с определением вспомогательных методов, которые используются более чем одним контроллером.Неопределенный метод `options_for_select '

Я извлек этот метод в свой собственный модуль:

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

Есть ли причина, по которой вы включаете ее в свой контроллер? –

+0

Я где-то читал, чтобы поместить общие вспомогательные методы в ApplicationController. –

ответ

0

options_for_select - метод просмотра, и он недоступен в контроллере. Однако нет смысла использовать его в контроллере.

Если вы сохраните ColumnMapHelper файл в папке /app/helpers, то drop_down_upload_file_types автоматически будет доступен для всех ваших взглядов (до тех пор, как ваше приложение включает в себя все хелперы по умолчанию).

+0

Доступен ли он глобально? Нет префикса пространства имен? –

+0

Да, пока вы находитесь на виду. –

1

Если вы используете хелпер в своих представлениях, вам не нужно ничего делать, поскольку по умолчанию все приложения/помощники включены.

Вы хотите использовать helper_method в своем контроллере, если у вас есть методы, подобные current_user, которые вы хотите разделить с представлением.