簡體   English   中英

使用帶有Rails 5的responders gem

[英]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 APIRails也是如此。

這意味着創建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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM