Как определить Rails Helper для одного конкретного действия? - PullRequest
3 голосов
/ 09 мая 2011

У меня есть LabelTagHelper с пользовательским label_tag методом, но этот метод мне нужен только в моих новых , созданиях , правках и обновить действий.

Есть ли способ определить этот помощник только для конкретного действия?Что-то вроде helper :label_tag, :only => [:new, :create, :update, :destroy]?Или безопасно вызывать self.class.helper :label_tag в before_filter?

Ответы [ 2 ]

1 голос
/ 09 мая 2011

rails Помощники должны быть просто форматерами.Думайте об этом так же, как о функциях, которые украсят ваш уровень представления (представление)

Поэтому наличие помощников как: before_filter не имеет никакого смысла.В качестве действий контроллеров часто используется некоторая обработка на стороне сервера.

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

Кстати, не могли бы вы уточнить ваше требование, почему вы хотите ограничить своего помощника

HTH

sameera

0 голосов
/ 12 мая 2011

попробуйте это,

Иметь такой вспомогательный метод (в моем случае я использовал вспомогательный 'ProjectsHelper')

module ProjectsHelper
  def label_tag *params
    if controller.action_name == "index"
      #user custom implementation
    else
      super
    end

  end
end

Это работает ... надеюсь, это то, что вам нужно,

ура

НТН

Sameera

ПРИМЕЧАНИЕ: извините, что не обновил существующий ответ. Так как это совершенно новый подход, подумал о том, чтобы иметь отдельный ответ

...