0

我有一个评论控制器。我允许访客(未经身份验证的用户)查看用于发布新评论的表单并允许他们提交。

现在,我想在我的用户提交表单后对其进行身份验证。到目前为止,我已经做到了。

class CommentsController
  before_filter :authenticate_user!, only: [:create]

  def create
    @comment = Comment.new params[:comment]
    @comment.save!
    redirect_to @comment
  end
end

所以现在,当用户提交评论时,他们会被带到登录页面,并且能够进行身份验证。然而,在他们这样做之后,用户被重定向回应用程序的根目录,并且评论永远不会被创建,只是丢失了。

现在,如果您authenticate_user!在 GET 操作之前调用,则在用户进行身份验证后,他们似乎被重定向到其原始目的地。POST 请求似乎并非如此。

那么,如何create在用户认证后立即处理该操作?

4

1 回答 1

0

您有两种可能可行的方法:
1. 存储用户所在的位置,将其存储在会话中并在登录后将它们重定向回表单(您可能还希望将他们的评论存储在会话中,所以他们不必再次输入)。
2.只需将评论存储在会话中,并在认证完成后保存。

Devise wiki 提供了有关这两个选项中的前者的一些信息:https ://github.com/plataformatec/devise/wiki/How-To:-Redirect-back-to-current-page-after-sign-in ,-注销,-注册,-更新

于 2013-05-22T22:21:25.023 回答