編集 - 明らかに誰も私を悩ますことは何も考えていません。ページ内の他の場所で行ったことが、送信されているステータス属性をブロックしていることが問題になっていると思います。問題はただ何も見ることができないことです。私は誰かが似たようなものを見て、私が見なければならない場所を示唆してくれることを期待しています。名前に「ステータス」のフォームフィールドを投稿できないのはなぜですか?
私のページには、私のweb-appにデータを投稿するためのダミーフォームがあります。それはRailsで(HAMLを使って)作成されます。
=form_tag bulk_invoice_path(''), method: 'put', class: 'mark-sent-form' do
=hidden_field_tag 'invoice[status]', 'Sent'
これは、次のHTMLを生成します。 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>
、
<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>
を以下のように表示されます。このフォームはそうのような(のCoffeeScriptを使用して)jQueryを使って転記され;
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"}
私はそれがRailsのことだとは思わないので、私はChromeの開発ツール上で「ネットワーク」タブを監視している場合、ブラウザの問題であるように思わ同じことが起こって参照してください。 SafariとFirefoxでも同様のことが起こります。
ステータスはブラウザのフォームにある種の魔法の予約語ですか?何が起きてる?
いいえ、予約語はありません。私はそれを試してみました。うまく動作しています。 –
OK、それは私のために働いていません。 – brad
生成されたHTMLフォームを投稿できますか? –