【发布时间】:2012-11-01 10:15:43
【问题描述】:
编辑 - 显然没有人知道这里让我烦恼的是什么。我认为这只是我在页面其他地方所做的某些事情阻止了正在发送的状态属性的问题。问题是我什么都看不到。我希望有人看到过类似的东西并可以建议我需要看的地方。
我的页面上有一个虚拟表单,用于将数据发布到我的网络应用程序。它是在 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="✓" />
<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"}
即invoice[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 上也得到了同样的结果。
状态是浏览器表单中某种神奇的保留字吗?这是怎么回事?
【问题讨论】:
-
没有这样的保留字我试过了,效果很好
-
好的,但它不适合我。
-
你能把生成的HTML表单贴出来吗?
-
如果它没有出现在网络标签中,那么它是一个表单问题。您可以从源代码和 DOM 发布表单 html 吗?
-
您是否有机会在所有浏览器中使用相同的插件/扩展程序?它适用于 Aayush 的事实,但不是你,这表明你有一些特别的事情发生......尝试禁用所有 Chrome 的扩展程序,看看是否有东西拦截它。
标签: ruby-on-rails forms browser parameters