Rails не передает значения формы - PullRequest
1 голос
/ 30 июня 2011

Работа над довольно старым приложением, которое широко использует rails / prototype view helpers / rjs. У нас есть довольно повторяющаяся проблема (случается примерно полдюжины раз в неделю, но обычно на тех же страницах), когда параметры формы не отправляются. Таким образом, с точки зрения контроллеров, хэш params содержит только значения, которые маршрутизатор смог получить из маршрута. Глядя на сами формы, они, как правило, довольно просты.

Общим для них является то, что они используют remote_form_for, который на самом деле имеет код отключения форм, который запускается после запуска прототипа Ajax. В некоторых местах это даже более явно, что-то вроде этого (использует древний синтаксис, это началось как приложение rails 1):

remote_form_for :pallet_move, 
  :row_id => 'new_pallet_move', 
  :html => {:id => 'new_pallet_move_form'}, 
  :method => :post, 
  :after => "$('new_pallet_move_form').disable();',
  :url => create_many_pallet_moves_path do |f|

в контроллере, он делает что-то вроде этого

PalletMove.new params[:pallet_move].merge(:move => move)

Теперь этот код работает примерно 99% времени. Но в соответствии с hoptoad, примерно десять раз за последний месяц, мы получаем NoMethodError: undefined method 'merge' for nil:NilClass с этим в качестве параметров {"move_id"=>"908097", "action"=>"create_many", "controller"=>"pallet_moves"}

Просто хочу посмотреть, видели ли люди это раньше или у них есть какие-либо идеи для расследования, потому что я как бы вне идей.

...