2011-01-21 1 views
0

Я реализовал Authlogic в своем приложении rails, который отлично работает и отлично работает. Пользователи могут войти в систему, выход из системы и т.д.Проблема с Rails + Authlogic @current_user - метод «Показать» больше не работает

Однако, так как я изменил свои методы в users_controller не использовать @current_user переменной, ни один из моих методов пользователя или форм (кроме «индекс» странно ...) Работа!

К примеру, это «Показать» методы работы и показывает профиль пользователя для любого пользователя (Примечание: Я хочу, чтобы в конечном счете ограничить это вошедшего в систему пользователя или иначе):

def show 
    @user = User.find(params[:id]) 
end 

Если я следовать показать способ, как показано на Authlogic рельсы бросания и официальный пример:

def show 
    @user = @current_user 
end 

я получаю все виды undefined method METHOD for nil:NilClass ошибок. Кажется, что переменная @current_user не содержит никакой информации пользователя.

Я предполагаю, что @current_user тянет данные из current_user способом, как это определено в контроллере приложения ниже:

def current_user 
    return @current_user if defined?(@current_user) 
    @current_user = current_user_session && current_user_session.record 
end 

Что мне не хватает? Моя догадка заключается в отсутствии сопоставления между объектом User из пользовательской модели и методом current_user. Любая помощь будет принята с благодарностью!

Заранее благодарен!

~ Dan

ответ

5

Если это не будет просто

def show 
    @user = current_user 
end 

без @?

+0

Правильно, Разрабатывает обеспечивает 'current_user' метод для вас. –

+0

Мне кажется, что я вызываю метод, а не предопределенную переменную. Это было немного запутанно, так как большая часть кода примера онлайн была установлена ​​на @user = @current_user. В очередной раз благодарим за помощь! Вот почему я люблю StackOverflow – thoughtpunch

1
def 
if @current_user 
@user = @current_user 
else 
@user = User.find(params[:id]) 
end 
end 

Просто предположите, попробуйте.

+0

Это был не полный ответ, но я решил использовать эту идею, чтобы пользователи, не зарегистрированные в журнале, просматривали профили. Благодаря! – thoughtpunch

2

current_user - это помощник, который поставляется с authlogic, поэтому вам нужно использовать его без «@». Обычно вы создаете @sothing для передачи его от контроллера для просмотра, поэтому вы получите доступ к чему-то, что вы подготовили в методе действий.

+0

Это имеет смысл ...Интересно, почему они установили это в примере кода на Github? – thoughtpunch

2

У меня была аналогичная проблема с authlogic и rails 3, это было из-за аутентификации apache http, которую я имел на моем рабочем сервере. И я получил, что фиксируется, добавив строку ниже мой user_session.rb (модель)

allow_http_basic_auth false 

это ссылка блог, который спас мою жизнь уфhttp://www.christopherirish.com/2011/08/12/rails-3-authlogic-sessions-not-persisting-in-production/comment-page-1/#comment-181

+0

Что это за проблема? вы можете уточнить? что делает 'allow_http_basic_auth false '? – Sazzad

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

  • Нет связанных вопросов^_^