[英]Using responders gem with Rails 5
我正在使用響應者gem來干掉我的控制器。 這是我目前的代碼:
class OfficehoursController < ApplicationController
def new
@officehour = Officehour.new
end
def create
@officehour = Officehour.create(officehour_params)
respond_with(@officehour, location: officehours_path)
end
def officehour_params
params.require(:officehour).permit(:end, :start, :status)
end
end
我現在面臨的問題是:
當我發送有效參數進行create
,它會按預期重定向到officehours/
,但是當我得到422(驗證錯誤)時,它會將officehours/new
更改為officehours/
(但它會保留在表單頁面... idk為什么)。 編輯/更新操作也是如此。
所以,當我得到422錯誤時,我想留在.../new
或.../edit
,我該怎么做?
我不認為問題來自寶石。 它只是遵循RESTFUL API , Rails
也是如此。
這意味着創建office hours
的路徑是/officehours
。 我們來談談你的情況:
我們成功創建時無話可說。 在您的情況下,您將用戶重定向到officehours_path
。
當我們創建失敗時 ,我們需要將錯誤表單重新呈現給用戶。 但是我們在create
動作中渲染表單。 如上所述,創建的URL是/officehours
,因此您將看到/officehours
而不是officehours/new
為了保持url /officehours/new
:
/officehours/new
而不是/officehours
:create
action。 但你不應該這樣做,我們是否會打破RESTFUL API
? AJAX
創建以保持URL持久化並且您必須處理所有內容,例如:在客戶端設置Flash消息,在成功的情況下使用Javascript重定向,在出現故障時呈現表單錯誤,...而且我不認為寶石幫助你干掉你的應用程序了。 希望能幫助到你!
我不認為這是響應者gem中的問題,因為我在rails應用程序中注意到了相同的問題。 這似乎是rails應用程序的默認行為。 看一下這個鏈接的解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.