2013-08-07 4 views
1

При использовании методов контроллера в качестве помощника в представлениях, как вы передаете аргумент?Rails helper_method с аргументом

В моей example_controller.rb я имею

class ExampleController < ApplicationController 
    helper_method :group_exists? 

    private 
    def group_exists?(gid): 
    .. code to check if group exists 
    end 
end 

В представлении (я использую тонкий), я хочу, чтобы передать аргумент

- if group_exists?(group.gid) 
    | Exists 
- else 
    | Does not exist 

Однако он бросает ошибку говоря

wrong number of arguments (2 for 0..1) 
+0

Почему бы вам просто не создать новый помощник вместо создания метода внутри элемента управления? –

+0

Я мог бы, это просто показалось проще, поскольку я только начинаю с рельсов. Неужели я не могу передать аргументы таким образом? – bibstha

+0

Вы уверены, что это сообщение об ошибке, которое вы считаете нужным? – fphilipe

ответ

2

Бадди, если вы действительно хотите использовать вспомогательный метод, для него уже определено место. Просто напишите тот же метод в классе ExampleHelper, который уже создан для вас.

Причина в том, что если вы хотите отлаживать помощника, вы будете знать, где искать очень легко. Не создавайте помощников в контроллере до тех пор, пока ваш случай использования специально не вызовет его.

+0

Спасибо, да, я видел, что строительные леса создали папку ExampleHelper внутри вспомогательной папки. Благодарю. – bibstha

1

Я использую блоки при использовании before_filter. Это может быть полезно и в helper_method, но я не уверен. Попробуйте это и, пожалуйста, дайте мне знать, она работала или нет, если нет, мы оба будем искать другие варианты:

helper_method {|x| x.group_exists?(gid) } 

Надеется, что это поможет. Спасибо

+0

Не работает. В нем указан неопределенный метод 'group_exists? ' – bibstha

Смежные вопросы