в Rails 3 как id передается в операторе обновления - PullRequest
1 голос
/ 06 октября 2011

Итак, у меня проблемы с отсутствием значения params [: id] в действии обновления.

Я получаю «Не могу найти меню без идентификатора» - в элементе формы есть id = "edit_menu_1".

Если я запускаю скаффолд для аналогичного элемента, кажется, что это будет то, что выбирается оператором обновления (т.е. нет значения id в операторе POST).Это правильное значение, которое я должен искать / отладки?Есть ли стандартная техника отладки Rails, где я могу использовать значение id (скажем, как скрытое поле формы с правильным идентификатором)?

thx

Edit # 1 From development.log Scaffolded (значение идентификатора существует):

 Parameters: {"utf8"=>"✓", "authenticity_token"=>"HfMoJHPC7oFFYDcmeHh4tVzlRtpreQTYT75L7TDZ3Qs=", "menu"=>{"content"=>"here is my menu - more things for you"}, "commit"=>"Update Menu", "id"=>"1"}

Мое приложение (без значения идентификатора)

Parameters: {"utf8"=>"✓", "authenticity_token"=>"xr82q8+YSj7z1WorVedqUKzEYroycDslMgRqgZf5crQ=", "menu"=>{"name"=>"Bar Menu - some thigs"}, "commit"=>"Update Menu"}

Код моей формы:

<%= form_for(@menu ,  :url =>  menus_save2_path)  do |f| %>
   <div><%=f.text_field :name %></div>
  1. Как бы яforce в значении id?
  2. Имеет смысл, но если я посмотрю на код скаффолдинга, то для значения id не будет скрытого параметра.Это делается автоматически?

1 Ответ

1 голос
/ 06 октября 2011

params всегда отображается в log/development.log, поэтому вы должны видеть, какие параметры присутствуют при обслуживании запроса.Обычно параметр :id предоставляется в URL, а не в форме HTML, и создается системой маршрутизации.Ваш параметр может отсутствовать, потому что вы забыли включить его в целевой URL вашего form_tag или form_for вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...