Modifica - chiaramente nessuno ha idea di cosa mi tormenta. Penso che sia solo questione di essere qualcosa che ho fatto altrove nella pagina che sta bloccando l'attributo di stato inviato. Il problema è che non riesco a vedere nulla. Spero che qualcuno abbia visto qualcosa di simile e possa suggerire dove devo guardare.Perché non posso inviare un campo modulo con 'stato' nel nome?
Ho un modulo fittizio sulla mia pagina per inviare dati alla mia web-app. È creato in Rails (usando HAML) in questo modo;
=form_tag bulk_invoice_path(''), method: 'put', class: 'mark-sent-form' do
=hidden_field_tag 'invoice[status]', 'Sent'
Questo genera il seguente 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>
Nel DOM, questo appare come segue
<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>
Questo modulo è inviato con jquery (usando CoffeeScript) in questo modo;
jQuery ->
$('a.mark-sent').click -> updateBulkInvoices('.mark-sent-form')
updateBulkInvoices = (form) ->
$(form).attr('action', "/bulk_invoices/#{checkedInvoices().get().join()}").submit()
Questo modello mi ha servito bene con altre azioni, ma la 'fattura [stato]' sembra essere la causa dei problemi. Quando il modulo viene inviato con jQuery, il campo nascosto non viene passato. Vedo quanto segue nella mia console Rails;
Parameters: {"utf8"=>"✓", "authenticity_token"=>"+qW9kIih5l2j69w1LK2YfQ9mYQ7nKPDm5XgLZuKB4ic=", "id"=>"16"}
cioè la fattura campo [stato] non viene passato con i parametri di modulo. Se cambio il nome di questo campo in qualsiasi altra cosa, funziona bene, ad es.
=form_tag bulk_invoice_path(''), method: 'put', class: 'mark-sent-form' do
=hidden_field_tag 'invoice[flatus]', 'sent'
mi dà i seguenti parametri nella mia console;
Parameters: {"utf8"=>"✓", "authenticity_token"=>"+qW9kIih5l2j69w1LK2YfQ9mYQ7nKPDm5XgLZuKB4ic=", "invoice"=>{"flatus"=>"sent"}, "id"=>"16"}
vedo la stessa cosa accade se a monitorare la scheda 'rete' a strumenti per gli sviluppatori di Chrome in modo da non penso che sia una cosa Rails, sembra essere un problema di browser. Provo la stessa cosa anche con Safari e Firefox.
Lo stato è una sorta di parola magica riservata nei moduli del browser? Cosa sta succedendo qui?
No, non ci sono parole riservate. L'ho provato e funziona correttamente. –
OK, non funziona comunque per me. – brad
Puoi pubblicare il modulo HTML generato? –