Очаква се хеш на параметрите, но се получава низ (Rails)

Имам типичен формуляр за регистрация, който има например три полета: вход, парола и имейл. Ние използваме помощници за формуляри на rails, така че очакваме те да дойдат при нас в хеш наименуван потребител.

Нещо близко до това, което бихме очаквали:

Параметри: {"action"=>"new", "controller"=>"users", "user"=>{"password"=>"[FILTERED]", "login"=>"new_user_login", "email"=>"new_user_email"}}

След това правим неща като: params[:user].merge(SOME_HASH) # някои други неща, които искаме да запазим в потребителския обект

Няколко пъти на ден получаваме „недефиниран метод „сливане“ за String“ и гледайки тези заявки, параметрите вместо това идват като:

Параметри: {"action"=>"new", "controller"=>"users", "user"=>"login=new_user_login&email=new_user_email&password=[FILTERED]"}

params[:user], който очакваме да бъде хеш, идва като единичен низ на заявка, което води до грешката.

Някой друг виждал ли е това в своите регистрационни файлове? Идва от същата форма като другите и е валиден POST с набор authenticity_token и т.н. И като потърсихме това влизане в нашата база данни, открихме, че потребителят е опитал отново заявката и е успял.

Може ли грешката да е и в браузъра? Това лице беше Firefox 3.6 на Mac.


person Gee Chuang    schedule 29.04.2011    source източник
comment
Какви версии на Ruby и Rails използвате? Също така, имате ли Rack мидълуер? Малко вероятно е, но нещо може да го прихваща, преди да стигне до вашия метод на контролер. Освен това може да е проблем с кодирането на текст. Имаше ли необичайни знаци в някой от тези записи? Ruby 1.8 има някои странности в кодирането.   -  person michaeltomer    schedule 29.04.2011
comment
Работим с Rails 2.3.2 и Ruby 1.8.7 (Enterprise). Ние не изпълняваме rack мидълуер и в този случай всички символи, които идват, са обикновени ASCII символи. Благодаря за помощта!   -  person Gee Chuang    schedule 29.04.2011