2012-03-27 2 views
1

Привет У меня есть вспомогательный метод, который возвращает строку, где мне нужно использовать это для каждого представления. Я пытаюсь добавить этот метод к ApplicationHelperиспользуя вспомогательный метод в представлении rails 3

мой ApplicationController выглядит следующим образом

class ApplicationController < ActionController::Base 
    helper :application 
end 

мой ApplicationHelper выглядит как этот

module ApplicationHelper 
    def ThemeDir 
    "http://mysite.com/something/something" 
    end 
end 

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

<%= ThemeDir %> 

это дает мне f ошибка.

uninitialized constant ActionView::CompiledTemplates::ThemeDir 

Может кто-то мне помочь с этим пожалуйста.

ответ

5

В Rails 'ThemeDir' рассматривает его как постоянный.

Сделайте имя метода как 'theme_dir' и попробуйте это.

9

Соглашение в Ruby заключается в том, что только константы (то есть «классические» константы, классы и модули) начинаются с буквы верхнего регистра. Методы и переменные всегда должны начинаться с буквы нижнего регистра.

Также константы написаны на верблюжьем корпусе (обратите внимание на два «горба» в ApplicationController?), В то время как переменные и методы обычно записываются в синтаксисе подчеркивания, например theme_dir. Это отличает рубин от таких языков, как Java, Javascript или C#, где повсюду используется видеокамера, хотя они по-прежнему различают константы/инициализирующие функции от переменных и функций в случае первой буквы).

Разница важна, поскольку методы разрешаются иначе, чем константы. Поэтому для Ruby важно знать, является ли вещь, которую вы запрашиваете, константой или методом или локальной переменной.

Завершите это, пожалуйста, назовите свой вспомогательный метод theme_dir, и все должно быть хорошо.

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