используя вспомогательный метод в представлении рельсы 3 - PullRequest
1 голос
/ 27 марта 2012

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

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

class ApplicationController < ActionController::Base
  helper :application
end

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

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

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

<%= ThemeDir %> 

дает мне следующую ошибку.

uninitialized constant ActionView::CompiledTemplates::ThemeDir

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

Ответы [ 2 ]

9 голосов
/ 27 марта 2012

В Ruby существует соглашение, согласно которому только константы (то есть "классические" константы, классы и модули) начинаются с заглавной буквы.Методы и переменные всегда должны начинаться со строчной буквы.

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

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

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

5 голосов
/ 27 марта 2012

В Rails 'ThemeDir' обрабатывает его как константу.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...