authlogic_oid, перенаправляющий на / user_sessions # index вместо / user_session # create - PullRequest
0 голосов
/ 19 марта 2011

Я пишу приложение rails3 с использованием authlogic и authlogic-oid, чтобы пользователь мог войти и зарегистрироваться, используя свою учетную запись LinkedIn.Я могу вызвать LinkedIn для аутентификации, но проблема у меня заключается в том, что когда вызов возвращается в мое приложение rails, он вызывает GET для / user_sessions и вызывает контроллер индекса вместо выполнения оставшейся части команды createконтроллер.Вот контроллер:

# POST /user_sessions                                                         
def create
  @user_session = UserSession.new(params[:user_session])
  @user_session.save do |result| # <-- redirects to api.linkedin.com here
    if result
      flash[:success] = "Login successful!"
      redirect_back_or @user_session.user_path
    else
      flash.now[:error] = "Invalid username/password combination."
      @title = "Sign in"
      render 'new'
    end
  end
end

Все прекрасно работает до тех пор, пока if result не будет вызван, потому что программа возобновляет выполнение в контроллере index вместо того, чтобы начинать с того места, где она остановилась.Любые идеи о том, как это исправить, будут высоко оценены.

Редактировать: кажется, мое предположение о том, что контроллер не завершал выполнение, было неверным.Я поместил несколько операторов отладки и узнал, что программа возобновляет выполнение в этом контроллере после @ user_session.save , но она не выполняет ни одно из условий в операторе if.Я очень запутался в этом.

1 Ответ

1 голос
/ 19 марта 2011

, если вы не хотите использовать index метод в вашем UserSessionsController, напишите это: resources :user_session в вашем route.rb. Если вы будете использовать форму единственного числа, то route может отображать CRUD (создавать, читать, обновлять, удалять), а если вы будете использовать множественное число, тогда он будет связывать CRUD с помощью метода index вашего контроллера.

...