#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.