2013-05-27 2 views
2

Возможно, у меня что-то не хватает. Скажем, например, у меня есть вспомогательные функции в приложение/хелперов/foo_controller.rb и код выглядит следующим образом:Ruby on Rails - с помощью помощников в html.erb

def sample_helper(count) 
    #implementaton... 
end 

, и я хочу использовать этот помощник на веб-странице, порожденного рельсам и код выглядит следующим образом :

<%= sample_helper(user.id) %> 

, и если я попытаюсь запустить веб-страницу, это заставит меня ошибочно сказать, что метод не определен. Спасибо заранее!

ответ

0

Ваш помощник должен быть в файле с именем приложения/хелперы/foo_helper.rb, который содержит аа модуль с таким же именем, как хелперов (camelized) Как:

module FooHelper 
    def sample_helper(cont) 
    # implementation 
    end 
end 

Это путь Рельс авто загружает помощников.

2

Вы не совсем согласны с именованиями.

Имя Ваш помощник файл app/helpers/foo_helper.rb и в нем вы должны иметь это:

module FooHelper 
    def sample_helper(count) 
    "#{count} items" # or whatever 
    end 
end 

И теперь, с любой точки зрения, вынесенным FooController вы должны быть в состоянии использовать метод sample_helper.


Кроме того, вы должны знать, что если вы используете генераторы рельсов, эта структура настроена для вас. Все, что вам нужно сделать, это добавить методы в файлы, которые генерируются. Таким образом, вам не нужно угадывать соглашения об именах.

Например, эта команда создаст файл контроллера, тестовые файлы контроллера, вспомогательный файл и файл индекса, все готово для вас.

rails g controller foo index 
Смежные вопросы