我知道我无法在 HTML 重定向上发布,但我的情况要求我在验证用户身份后重定向以创建操作。我想知道如何绕过这个限制:
特别是,我希望允许用户在不使用 Omniauth 登录的情况下填写帖子。我使用 AJAX 调用将帖子保存到 session[:post] 。然后,用户可以使用omniauth 登录并保留帖子。
我有一个带有创建操作的 PostsController 来处理初始 ajax 调用,并在验证用户后处理 html 请求:
def create
@post = Post.new(params[:post])
respond_to do |format|
format.html{
if @post.save
redirect_to @post, notice: 'Post was successfully created.'
else
render action: "new"
end
}
format.json {
if session[:post] = @post
render json: @post, status: :created, location: @post
else
render json: @post.errors, status: :unprocessable_entity
end
}
end
end
end
然后,在处理来自 Facebook 的回调的控制器中,我有:
class ServicesController < ApplicationController
def create
... authentication logic here ...
sign_in(:user, service.user)
redirect_to :controller => "posts", :action =>"create"
end
method_alias: :facebook, :create
但是,这不起作用,因为我无法重定向到“创建”操作。我怎样才能完成这项任务?