2013-01-24 8 views
5

Quindi, in HTML, se ho fatto un modulo come questo:Rails 2 - Hash previsto (Array ottenuto) per param

<form method="post"> 
<input type="text" name="categories[][name]" /> 
<input type="text" name="categories[][name]" /> 
<input type="text" name="categories[][name]" /> 
<input type="text" name="categories[][name]" /> 
<input type="submit" value="submit" /> 
</form> 

mi aspetto params[:categories] essere

[{"name"=>"value"},{"name"=>"value"},{"name"=>"value"},{"name"=>"value"}] 

Ma invece, rotaie 2 sarà sollevare un TypeError: Hash atteso (Array ottenuto) per param

L'errore viene generato qui:

http://apidock.com/rails/Rack/Utils/normalize_params

Perché non è consentito o non è analizzabile nei binari? Cosa mi manca?

So che potrei indice l'ingresso in questo modo

<input type="text" name="categories[0][name]" /> 
<input type="text" name="categories[1][name]" /> 
<input type="text" name="categories[2][name]" /> 
<input type="text" name="categories[3][name]" /> 

E ottenere un hash. Ma questo sembra controproducente.

risposta

3

Hai avuto modo di invertire l'ordine pedice:

<input type="text" name="categories[name][]" /> 
+0

Grazie per l'aiuto, ma questo è un risultato diverso da quello che voglio. Non voglio solo una matrice. Voglio una matrice di hash. Chiarirò nel mio post – vinhboy

+1

nvm. Hai ragione. Ero stupido e confuso ... Ho bisogno di riposare. :( – vinhboy