我明白你在問什麼,所以我會試着讓你完成它。
在用戶點擊「使私人」的點,有一個對象,已經被創建,是否正確?假設如此,那麼當未登錄用戶重定向到登錄頁面時,只需將該對象ID與「make private」命令一起傳遞即可。這意味着你應該有像下面設置了一個param列表:object_id => "1", method => "make_private"
現在你有一個選擇,您可以更新,檢驗有效的登錄方法中的對象,你應該這樣做已經有:
if params[:object_id] && params[:method] == "make_private"
#make object private
redirect_to objects_path(params[:object_id])
else
#normal login redirect
end
,或者你可以在你的登錄確認方法重定向到該對象的更新方法,並從他們重定向到該對象的視圖頁面,像下面這樣:
def login_validation
#normal login checking
if params[:object_id] && params[:method] == "make_private"
redirect_to object_path(params[:object_id])
else
#redirect to normal after login page
end
end
然後在你更新你會想:
def update
#normal update stuff
redirect_to objects_path(params[:object_id])
end
很明顯,你需要的東西會檢測更新方法中的「make private」命令,但這不應該太難。如果您需要幫助,請點擊此處,我也會爲此添加說明。
更新: 如果你真的想要看到你可以將重定向路徑本身傳遞到登錄函數,然後重定向到任何登錄路徑提供。
例如你化妝專用按鈕看起來是這樣的
<%= button_to "Make Private", object_path(:id=>object_id) %>
然後,它會嘗試更新,實現了它在用戶沒有登錄,並重定向到登錄頁面,如下所示:
def update
if user_logged_in?
#do normal update stuff
else
redirect_to login_path(:redirect_path => object_path(params[:id])
end
然後他們會填寫他們的正常信息,當他們點擊確認它會有一個像這樣的附加參數:
<%= button_to "Confirm", login_validation_path(<normal login params>,params[:redirect_path]) %>
然後在你的login_validation中,你會做你的正常驗證,然後重定向到你給的任何路徑。
def login_validation
#normal login stuffs
if params[:redirect_path]
redirect_to params[:redirect_path]
else
#normal redirect
end
這樣,您的登錄可以處理從多個不同位置調用,並正確地重定向到任何你想要的地方。
謝謝。爲了澄清,我的理解是,要發送到更新操作,您需要發送一個PUT請求,而我認爲您可以通過redirect_to來做這件事。我誤解了嗎? – user108338
@ user108338是的。你可以通過redirect_to使用PUT請求沒問題。您只需確保接收到PUT呈現或重定向到其他地方的視圖,因爲大多數更新都沒有附加的ERB文件。 – MCBama