Почему я не могу получить доступ к этому помощнику в моем контроллере? - PullRequest
2 голосов
/ 08 декабря 2010

Мой application_controller.rb имеет:

helper :all

Мой application_helper.rb имеет:

def authorized?
   false
end

Теперь в моем:

Admin::PostsController < ApplicationController

  before_filter :authorized?

Я получаю ошибку:

undefined method `authorized?'

Это не имеет смысла для меня, помощник: все установлено, и этот контроллер наследует от application_controller.

Чего мне не хватает?

Ответы [ 3 ]

4 голосов
/ 08 декабря 2010

Ответ на аналогичный вопрос здесь здесь

UPDATE

ответ там был следующим

helper: all делает все помощники (да, все) доступными в представлениях, но не включает их в контроллер.

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

1 голос
/ 08 декабря 2010

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

Кроме того, если вы все еще хотите иметь доступ к вспомогательному методу в контроллерах, вам нужно выполнить @template.authorized?.Не уверен, что это работает в рельсах 3.

0 голосов
/ 08 декабря 2010

Я не знаю.Но include ApplicationHelper должен служить обходным путем.

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