我知道我無法POST HTML重定向,但是我的情況要求重定向以在對用戶進行身份驗證之後創建操作。我想知道如何繞過這個限制:如何重定向以創建另一個控制器的動作
特別是,我想允許用戶填寫一篇文章,而不使用Omniauth登錄。我使用AJAX調用將帖子保存到會話[:post]。然後,用戶可以使用omniauth登錄並堅持該帖子。
我有創建處理初始AJAX調用行動PostsController,而且還處理認證用戶後的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
但是,這不起作用,因爲我無法重定向到「創建」操作。我怎樣才能完成這項任務?
,我認爲是被'渲染動作=>:create',但我struggeling找到文檔吧。 – Automatico 2013-02-27 20:49:10
@ Cort3z:如果你能找到答案,我將不勝感激。我也會去找的。 – AdamNYC 2013-02-27 20:51:46
您應該創建一個答案,而不是編輯您的問題,對未來的訪問者來說它會更具可讀性。看看下面的網址關於如何添加一個沒有錯誤的persist路由(在你的情況下使用集合路由):http://guides.rubyonrails.org/routing.html#adding-more-restful-actions – Baldrick 2013-02-27 21:15:36