Почему параметр строки моего запроса не передается в мое представление

#ruby-on-rails

#ruby-on-rails

Вопрос:

Вопрос новичка

URL:

 /categories/new?parent_id=6
  

Контроллер:

 def new
    @category = Category.new( :parent_id => params[ :parent_id ] )
end
  

Вид:

 <%= form_for( @category ) do |f| %>
<%= f.hidden_field :parent_id %>
<% end %>
  

Источник страницы:

 <input id="category_parent_id" name="category[parent_id]" type="hidden" />
  

Почему значение не передается через?

РЕДАКТИРОВАТЬ: после этого я понял, что этого у меня не было :parent_id как части моей attr_accessible категории «В моей модели». Теперь все работает так, как должно. Спасибо за помощь, ребята.

Комментарии:

1. Нам нужно немного больше, чтобы разобраться с этим законопроектом. Однако попробуйте это и дайте нам знать. Category.new(параметры[ :parent_id ]) и добавьте <%= debug(параметры) %> в представление и посмотрите результат.

2.Я думаю, вам следует проверить nested_attributes. Возможно, он вам понадобится, чтобы сделать ваш код более структурированным. railscasts.com/episodes/196-nested-model-form-part-1 railscasts.com/episodes/197-nested-model-form-part-2

3. Извините за это @Ceilingfish, это была опечатка в вопросе. Код правильный.

4. @ChuckJHardy Вот результат: — !карта:ActiveSupport::HashWithIndifferentAccess действие: новый parent_id: «6» контроллер: категории

Ответ №1:

ОТРЕДАКТИРОВАНО после мудрого замечания @Ceilingfish

Попробуйте это:

 <%= form_for( @category ) do |f| %>
  <%= f.hidden_field :parent_id, :value => params[:parent_id] %>
<% end %>
  

Комментарии:

1. Я получаю исключение с сообщением: undefined method 'merge' for "6":String

2. Я думаю, он имеет в виду <%= f.hidden_field :parent_id, :value => params[:parent_id] %> . Однако он должен быть автоматически заполнен, если у объекта установлен соответствующий атрибут.

Ответ №2:

Вы пытаетесь прочитать значение из скрытого поля в форме, но оно отправляется как параметр запроса в URL.