gpt4 book ai didi

html - 页面上的多个 form_fors 导致 _method 属性出现问题

转载 作者:行者123 更新时间:2023-11-28 03:36:22 24 4
gpt4 key购买 nike

重写

我有 2 个模型。应用程序和对话。一个应用包含多个对话

resources :apps do
resources :conversations
end

我有一个 View ,上面有 2 个表单,使用标签表单。第一种形式用于更新应用程序模型。另一个用于创建或更新对话。

我遇到的问题是,当我使用 form_for 标记时,生成的 html 不会生成 _method 输入。

EG对话形式。

<form accept-charset="UTF-8" action="/apps/50c87614e976a31149000009/conversations" class="new_conversation ng-pristine ng-valid" id="new_conversation" method="post">

<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓">
<input name="authenticity_token" type="hidden" value="RqwwgBb737uuwg3PgRS+z0qlOP1aDqWe+2hrEeU0KHk=">
</div>

申请表

<form accept-charset="UTF-8" action="/apps/50c87614e976a31149000009" class="edit_app ng-pristine ng-valid" enctype="multipart/form-data" id="edit_app_50c87614e976a31149000009" method="post">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓">
<input name="_method" type="hidden" value="put">
<input name="authenticity_token" type="hidden" value="RqwwgBb737uuwg3PgRS+z0qlOP1aDqWe+2hrEeU0KHk="></div>

现在让我们只关注对话模型,因为这是有问题的模型。

从上面的 html 中,您会期望 Conversation 表单应该发送一个 post 请求。不幸的是,当 Rails 应用收到它时,它被视为一个放置请求。

查看 form_for 的文档,我知道 form_for 应该设置一个名为 _method 的隐藏输入字段。

如果您查看 Conversation 表单并将其与 App 表单进行比较,您会发现该 session 没有 _method 属性。我无法确定这是为什么。

有没有人知道为什么这会被忽略?或者为什么当我提交对话表单时,发送的是一个 puts 而不是一个 post?

最佳答案

Rails 实现了一个 HTTP put as post 表单,带有一个名为 _method 的隐藏输入,其值为 put。您应该会在作为 PUT 请求处理的表单中看到隐藏的输入。

form_for 将在为其创建表单的对象已经存在时生成一个放置表单。

关于html - 页面上的多个 form_fors 导致 _method 属性出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13971450/

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