0

У меня есть метод, который проверяет логическое значение в таблице и возвращает false в представлениях пользователей (везде, где он возвращает true). У меня возникли проблемы с пониманием того, почему он доступен, но возвращает false.Не удается получить доступ к методу Помощника Помощника в представлении

Мой код:

Контроллер Применение:

protected 

def current_user 

    @current_user ||= User.find_by_id(session_user_id) if session_user_id 
end 

helper_method :current_user 

def current_customer 
    if current_user.customer and current_user.customer.master? 
    else 
    current_user.customer 
    end 
end 

helper_method :current_customer 

Применение вспомогательный метод:

def customer_helper? 
    (current_user && current_user.customer.boolean_value?) 
end 

customer_helper? метод возвращает false во всех представлениях пользователей, хотя мой UserController наследует от ApplicationController.

Любые советы или помощь были бы очень признательны.

+0

Где находится метод 'customer_helper?'? – Fred

+0

В application_helper.rb –

+1

'current_customer' будет возвращать' nil', если 'current_user.customer && current_user.customer.master?' Оценивает значение true. Думаю, это вы вопрос. – engineersmnky

ответ

1

current_usernil в пределах вспомогательного метода. Я предполагаю, что вы обращаетесь к этому в представлении, где current_user подвергается просмотру с контроллера. Атрибуты, отображаемые в представлении, должны быть переданы в вспомогательные методы; они автоматически не доступны там.

Если мои предположения верны, то ваш вспомогательный метод должен выглядеть примерно так.

def customer_helper?(current_user) 
    (current_user && current_user.customer.boolean_value?) 
end 

Затем необходимо обновить вызов customer_helper? на ваш взгляд, чтобы пройти в CURRENT_USER.

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