gpt4 book ai didi

ruby-on-rails - 如何为 Rails 和 GWT 模拟 PUT/DELETE?

转载 作者:可可西里 更新时间:2023-11-01 15:10:08 29 4
gpt4 key购买 nike

我想让我的应用程序在某种程度上符合 REST 标准。我在后端使用 Rails 和 GWT在前端。我想做更新和删除。我意识到我可以做类似 mydomain.com/:id/delete (GET) 的事情并完成同样的事情。但是,正如我之前所说,我想要一个符合 REST 标准的后端。因此,我想执行 mydomain.com/:id (DELETE) 并让它隐式调用我的删除方法。

现在,据我了解,如果浏览器(我的浏览器是 GWT RequestBuilder)不支持 DELETE/GET,Rails 会以某种方式使用 POST 和其他一些 url 参数完成此任务。那么,如何使用 GWT RequestBuilder 完成此操作?

最佳答案

Rails 使用隐藏属性来做到这一点。解决这个问题的最简单方法是创建一个新的 Rails 应用程序,生成一个脚手架并在浏览器中查看 HTML。

试试这个:

rails jp
cd jp
./script/generate scaffold RequestBuilder name:string
rake db:migrate
./script/server

然后导航到http://localhost:3000/request_builders ,单击新建并查看 HTML。您会看到如下内容:

<form action="/request_builders" class="new_request_builder" 
id="new_request_builder" method="post">
<div style="margin:0;padding:0">
<input name="authenticity_token" type="hidden" value="e76..." />
</div>

这是一个创建,方法是POST。输入名称,保存然后编辑:

<form action="/request_builders/1" class="edit_request_builder" 
id="edit_request_builder_1" method="post">
<div style="margin:0;padding:0">
<input name="_method" type="hidden" value="put" />
<input name="authenticity_token" type="hidden" value="e76..." />
</div>

当然,表单是通过 POST 发送的,但是 Rails 有一个隐藏字段来模拟 PUT 请求。与删除相同,但脚手架将使用一些 Javascript 来完成:

var m = document.createElement('input'); 
m.setAttribute('type', 'hidden');
m.setAttribute('name', '_method');
m.setAttribute('value', 'delete');

要让这个与另一个前端一起工作,你必须:

  • 使用相同样式的 URL,例如/request_builders/1(RESTful URL)
  • 包括隐藏字段(Rails 技巧)

关于ruby-on-rails - 如何为 Rails 和 GWT 模拟 PUT/DELETE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/286321/

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