Edytuj - wyraźnie nikt nie ma pojęcia, co mnie tu dręczy. Myślę, że to tylko kwestia tego, że coś, co zrobiłem gdzie indziej na stronie, blokuje wysyłanie atrybutu statusu. Problem polega na tym, że po prostu nic nie widzę. Mam nadzieję, że ktoś widział coś podobnego i może zasugerować, gdzie muszę wyglądać.Dlaczego nie mogę opublikować pola formularza z "statusem" w nazwie?
Mam postać na mojej stronie, aby opublikować dane w mojej aplikacji internetowej. Jest on tworzony w Railsach (przy użyciu HAML), tak jak;
=form_tag bulk_invoice_path(''), method: 'put', class: 'mark-sent-form' do
=hidden_field_tag 'invoice[status]', 'Sent'
Generuje następujący kod 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>
w DOM ta wygląda następująco
<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>
Ta forma jest wysyłany z jquery (przy coffeescript) jak w przykładzie;
jQuery ->
$('a.mark-sent').click -> updateBulkInvoices('.mark-sent-form')
updateBulkInvoices = (form) ->
$(form).attr('action', "/bulk_invoices/#{checkedInvoices().get().join()}").submit()
Ten wzór dobrze mi pasuje do innych działań, ale "faktura [status]" wydaje się powodować problemy. Po przesłaniu formularza z jQuery ukryte pole nie jest przekazywane. Widzę następujące w mojej konsoli Rails;
Parameters: {"utf8"=>"✓", "authenticity_token"=>"+qW9kIih5l2j69w1LK2YfQ9mYQ7nKPDm5XgLZuKB4ic=", "id"=>"16"}
tj. Pole [status] faktury nie jest przekazywane z parametrami formularza. Jeśli zmienię nazwę tego pola na cokolwiek innego, to działa to dobrze, np.
=form_tag bulk_invoice_path(''), method: 'put', class: 'mark-sent-form' do
=hidden_field_tag 'invoice[flatus]', 'sent'
podaje mi następujące parametry w mojej konsoli;
Parameters: {"utf8"=>"✓", "authenticity_token"=>"+qW9kIih5l2j69w1LK2YfQ9mYQ7nKPDm5XgLZuKB4ic=", "invoice"=>{"flatus"=>"sent"}, "id"=>"16"}
widzę to samo dzieje się, jeśli monitorowanie zakładkę „sieć” na temat narzędzi deweloperskich Chrome więc nie sądzę, że jest to sprawa Rails, wydaje się być związany z przeglądarką. Podobnie jest z przeglądarkami Safari i Firefox.
Czy status jest jakimś magicznym zastrzeżonym słowem w formularzach przeglądarki? Co tu się dzieje?
Nie ma takich zarezerwowanych słów, które wypróbowałem i działa dobrze –
OK, to nie działa dla mnie. – brad
Czy możesz opublikować wygenerowany formularz HTML? –