“неопределенный метод” при вызове вспомогательного метода от контроллера в направляющих

Делает любой знает, почему я добираюсь

undefined method `my_method' for #<MyController:0x1043a7410>

когда я называю my_method ("строка") из моего подкласса ApplicationController? Мой контроллер похож

class MyController < ApplicationController
  def show
    @value = my_method(params[:string])
  end
end

и мой помощник

module ApplicationHelper
  def my_method(string)
    return string
  end
end

и наконец, ApplicationController

class ApplicationController < ActionController::Base
  after_filter :set_content_type
  helper :all
  helper_method :current_user_session, :current_user
  filter_parameter_logging :password
  protect_from_forgery # See ActionController::RequestForgeryProtection for details
41
задан Chad Johnson 5 March 2010 в 18:11
поделиться

3 ответа

Вы не можете вызывать помощников из контроллеров. Лучше всего создать метод в ApplicationController , если его нужно использовать в нескольких контроллерах.

РЕДАКТИРОВАТЬ : для ясности, я думаю, что большая часть путаницы (поправьте меня, если я ошибаюсь) проистекает из вызова helper: all . helper: all на самом деле просто включает всех ваших помощников для использования под любым контроллером на стороне представления. В более ранних версиях Rails пространство имен хелперов определяло, какие представления контроллеров могут использовать хелперы.

Надеюсь, это поможет.

61
ответ дан 27 November 2019 в 00:08
поделиться

Насколько мне известно, helper: all делает помощников доступными в представлениях ...

3
ответ дан 27 November 2019 в 00:08
поделиться

Может я ошибаюсь, но разве помощники не только для представлений? Обычно, если вам нужна функция в контроллере, вы помещаете ее в ApplicationController, поскольку каждая функция доступна в его дочерних классах.

7
ответ дан 27 November 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: