Как мне работать с файлами cookie и помощниками Rails 3? - PullRequest
0 голосов
/ 24 апреля 2011

Я создал пользователя и сохранил идентификатор в постоянном файле cookie:

def save_user_id_cookie
  cookies.permanent.signed[:user_id] = @user_id
end

Вот ссылка .

и затем попытайтесь получить к нему доступ:

helper_method :current_user

private
def current_user
  @current_user = @current_user || User.find(cookies.signed[:user_id])
end

Вот ссылка .

Я вижу cookie на своем компьютере, но при попытке загрузить домашнюю страницу я получаю:

Couldn't find User without an ID

app/controllers/application_controller.rb:8:in `current_user'

Контроллер здесь .

Ответы [ 3 ]

1 голос
/ 24 апреля 2011

В вашем save_user_id_cookie:

def save_user_id_cookie
    cookies.permanent.signed[:user_id] = @user_id # may be @user.id?
    puts 'saved cookie'
end

@user_id ноль. Я думаю, что вы должны использовать @user.id вместо.

1 голос
/ 24 апреля 2011

Поверьте, эта строка

@current_user = @current_user || User.find(cookies.signed[:user_id])

должна быть

@current_user = @current_user || User.find(cookies[:user_id])

* примечание: для меньшего количества кода вы можете попытаться назначить как

@current_user ||= User.find(cookies[:user_id])
0 голосов
/ 24 апреля 2011

Попробуйте это:

@current_user = @current_user || User.find(*cookies.signed[:user_id])

Обратите внимание на * перед печеньем.

и да, поскольку @nash указал, что user_id должно быть на самом деле user.id.
Я не стал искать там ошибки, так как вы сказали, что можете видеть куки на вашем компьютере.

...