На нашем клиенте мы отправляем тело POST следующим образом на маршрут по Rails:
names[0][name]=Joe Random&names[0][id]=123&names[1][name]=Joe Random2&names[1][id]=124
Это правильно закодировано в реальном запросе, просто хотелось показать, как оно должно выглядеть. В действии, которое обрабатывает этот запрос, мы видим ожидаемый результат при ведении журнала params[:names]
:
{"0"=>{"name"=>"Joe Random", "id"=>"123"}, "1"=>{"name"=>"Joe Random2", "id"=>"124"}}
Однако, если это тело POST становится очень большим, что-то вроде этого:
names[0][name]=Joe Random&names[0][id]=123
... names[5000][name]=Joe Random5000&names[5000][id]=5124
И мы регистрируем params[:names]
, теперь оно nil
, хотя вы можете увидеть тело POST, зарегистрировав request.raw_post
. Кроме того, нет ничего необычного в данных большого или маленького запроса, потому что я могу разобрать их вручную.
У кого-нибудь есть идея, почему это так? Если это поможет, у меня включен protect_from_forgery
. Также я на Rails 3.0.9.