2010-01-18 2 views
0

Я просто изучаю рельсы, и я столкнулся с некоторой проблемой. Позвольте мне начать с простой пробой моего приложения - это поваренная книга (сортов)Использование нескольких элементов collection_select в форме с несколькими моделями

  • Рецепты имеют один или несколько ингредиентов (тунец, селезенке и т.д.)
  • Ингредиенты имеют один блок (унции, фунты, и т.д.)
  • Units вытягивают из справочной таблицы

Вот скриншот, чтобы помочь прояснить вещи дальше: Form Mockup

Her Моя проблема: мои имена элементов коллекции_select должны быть чем-то вроде unit[id][]

Вместо этого все они только что названы unit[id]. Вот фрагмент кода, я использую:

 
collection_select(
    :unit, 
    :id, 
    @units, 
    :id, 
    :name, 
    options = { 
     :prompt => "Please Select", 
     :class => "ingredient_unit", 
     :name => "unit[][]", 
     :id => "unit:" + i.to_s() 
    } 
); 

Однако, это то, что он выводит:

 
<select id="unit_id" name="unit[id]"> 
<option value="">Please Select</option> 
<option value="1">Ounces</option> 
</select> 
... 

Теперь в PHP, эти выпадающие назвали бы unit[]. Неужели я ошибаюсь?

Спасибо за помощь

ответ

0

Я не уверен, что опция «имя» делает в «опции» хэш. Можете ли вы разместить ссылку на то, где вы нашли документацию? Похоже, вы правильно используете помощник выбора коллекции. Что вы подразумеваете под «этими выпадающими именами будет называться unit []»? Это может помочь, если вы сообщите нам свою конечную цель этой формы, поскольку Rails обычно просто обрабатывает материал для вас. Воспользуйтесь своей магией.

Также, если вы новичок Rails, настоятельно рекомендуем проверить скринкасты Райана Бейтса на сложных формах. Вот ссылка на часть 1: http://railscasts.com/episodes/73-complex-forms-part-1

+0

Спасибо за ссылку, это помогло LOT. Что касается параметра ': name', это было скорее предположением. С помощью других помощников формы вы можете передать имя ': name', чтобы указать имя ввода текста или еще что-то. Что касается моей цели формы, это было создание нового рецепта и назначение ингредиентов для этого рецепта и единиц для каждого ингредиента. Что касается примечания 'unit []': в PHP, если вы хотите указать массив элементов формы, вы добавляете '[]' в конец имени элемента, а затем '$ _POST' будет обрабатывать' $ _POST [" unit "]' как массив. Надеюсь, это поможет. –

+0

Просто предупреждение, код из некоторых вещей, о которых он говорит, был заменен вложенными атрибутами. http://railscasts.com/episodes/196-nested-model-form-part-1 –