gpt4 book ai didi

ruby-on-rails - 为什么我不能发布名称为 'status' 的表单域?

转载 作者:行者123 更新时间:2023-12-04 15:35:19 25 4
gpt4 key购买 nike

编辑 - 显然没有人知道这里让我烦恼的是什么。我认为这只是我在页面其他地方做了一些阻止发送状态属性的事情。问题是我什么都看不到。我希望有人看过类似的东西,并可以建议我需要看的地方。

我的页面上有一个虚拟表单,用于将数据发布到我的网络应用程序。它是在 Rails 中创建的(使用 HAML),如下所示;

=form_tag bulk_invoice_path(''), method: 'put', class: 'mark-sent-form' do
=hidden_field_tag 'invoice[status]', 'Sent'

这将生成以下 html;
<form accept-charset="UTF-8" action="/bulk_invoices/" class="mark-sent-form" method="post">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="&#x2713;" />
<input name="_method" type="hidden" value="put" />
<input name="authenticity_token" type="hidden" value="OU8GtbHycR/EJ+H3GG9MN59xI59v47LSaFc2wYZloAs=" />
</div>
<input id="invoice_status" name="invoice[status]" type="hidden" value="Sent" />
</form>

在DOM中,这显示如下
<form accept-charset="UTF-8" action="/bulk_invoices/" class="mark-sent-form" 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="OU8GtbHycR/EJ+H3GG9MN59xI59v47LSaFc2wYZloAs=">
</div>
<input id="invoice_status" name="invoice[status]" type="hidden" value="Sent">
</form>

这个表单是用jquery(使用coffeescript)发布的,就像这样;
jQuery ->
$('a.mark-sent').click -> updateBulkInvoices('.mark-sent-form')

updateBulkInvoices = (form) ->
$(form).attr('action', "/bulk_invoices/#{checkedInvoices().get().join()}").submit()

这种模式对我的其他操作很有帮助,但“发票[状态]”似乎引起了问题。使用 jQuery 提交表单时,不会传递隐藏字段。我在 Rails 控制台中看到以下内容;
Parameters: {"utf8"=>"✓", "authenticity_token"=>"+qW9kIih5l2j69w1LK2YfQ9mYQ7nKPDm5XgLZuKB4ic=", "id"=>"16"}

即发票 [status] 字段没有与表单参数一起传递。如果我将此字段的名称更改为其他任何名称,则它可以正常工作,例如
=form_tag bulk_invoice_path(''), method: 'put', class: 'mark-sent-form' do
=hidden_field_tag 'invoice[flatus]', 'sent'

在我的控制台中给我以下参数;
Parameters: {"utf8"=>"✓", "authenticity_token"=>"+qW9kIih5l2j69w1LK2YfQ9mYQ7nKPDm5XgLZuKB4ic=", "invoice"=>{"flatus"=>"sent"}, "id"=>"16"}

如果我监视 Chrome 开发人员工具上的“网络”选项卡,我会看到同样的事情发生,所以我认为这不是 Rails 问题,它似乎是浏览器问题。不过,我在 Safari 和 Firefox 上也得到了同样的结果。

状态是浏览器表单中某种神奇的保留字吗?这里发生了什么?

最佳答案

我无法重现该问题,但我怀疑它是由提交表单时的 Javascript 引起的。要对此进行调试,您可以执行以下操作:

  • 在 Chrome 中打开页面
  • 右键单击提交按钮,选择“检查元素”
  • 选择“来源”选项卡。
  • 在源选项卡中,找到被调用的 Javascript 的源
    当你点击提交。您可能需要单击
    “元素”选项卡下方框中的小右箭头。另外,如果
    代码已被丑化,所有换行符都已删除,您可以
    单击底部的“ pretty-print ”花括号图标
    页。
  • 找到该方法后,单击它旁边的行号
    左。在右侧 Pane 中,您应该会看到它出现在
    “断点”部分。
  • 重新加载页面
  • 单击提交按钮。

  • 这应该会带您进入在提交操作上暂停的 Javascript 调试器,然后您可以单步执行代码并确切地查看它在做什么。

    我希望这有帮助!

    关于ruby-on-rails - 为什么我不能发布名称为 'status' 的表单域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13174933/

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