gpt4 book ai didi

ruby-on-rails - 在 Rails 5 中使用响应者 gem

转载 作者:行者123 更新时间:2023-12-03 09:24:42 24 4
gpt4 key购买 nike

我正在使用 responders gem干掉我的 Controller 。这是我当前的代码:

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(验证错误)时,它会将 URL 从 officehours/new 更改为至 officehours/ (但是它停留在表单页面......我知道为什么)。编辑/更新操作也是如此。

所以,我想留在 .../new.../edit当我收到 422 错误时,我该怎么做?

最佳答案

我不认为这个问题来自 gem 。它只是跟随 RESTFUL API ,也是如此Rails .

那就是创建office hours的路径是 /officehours .说一下你的情况:

  • 创建成功就没什么好说的了。在您的情况下,您将用户重定向到 officehours_path .
  • 当我们创建 不成功 ,我们需要将错误表单重新呈现给用户。但是我们在 create 中渲染表单行动。正如我上面所说,创建的 URL 是 /officehours ,所以你会看到 /officehours而不是 officehours/new


  • 为了保持网址 /officehours/new :
  • 我们可以设置/officehours/new而不是 /officehours:create行动。但是你不应该这样做,我们会打破RESTFUL API ?
  • 创建通过 AJAX为了保持 URL 持久化,你必须处理所有事情,例如:在客户端上设置 flash 消息,在成功的情况下使用 Javascript 重定向,在失败时呈现表单错误,......而且我认为 gem 不会帮助你干你的应用程序了。

  • 希望能帮助到你!

    关于ruby-on-rails - 在 Rails 5 中使用响应者 gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49482609/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com