сформировать множественный выбор - PullRequest
2 голосов
/ 07 сентября 2011

Я изучаю рельсы и борюсь с этим уже более суток и не могу понять, как заставить это работать. Я хочу выбрать поле в моей форме, которое может выбрать несколько элементов. У меня это работает с этим кодом:

<div class="field">
<%= f.label :products %><br />
<%= f.select :products, {"A"=>1, "B"=>2, "C"=>3, "D"=>4},{},:size=>5,:multiple=>true %>
</div>

Это прекрасно работает и создает этот HTML:

<div class="field"> 
<label for="script_products">Products</label><br /> 
<select id="script_products" multiple="multiple" name="script[products][]" size="5">         
<option value="1">A</option> 
<option value="2">B</option> 
<option value="3">C</option> 
<option value="4">D</option></select> 
</div>

Что я могу понять, так это как результаты отправляются / сохраняются. На мой взгляд, для действия «показать», если я просто распечатываю: продукты, которые я получаю:

Продукты: --- - '1' - '2' - '3'

Если я распечатываю: products.inspect, я получаю это:

Продукты: "--- \ n- '1' \ n- '2' \ n- '3' \ n"

и класс является строкой. Я думал бы, что это будет сохранено как массив, но я не могу заставить это работать. Я не знаю, откуда черточки или переводы строк.

1 Ответ

0 голосов
/ 06 января 2012

Я бы рассмотрел добавление опций как отношения "есть много" в модели. Таким образом, вы можете перебирать их, прикреплять и вовлекать их в множественный выбор (IMO) лучшим способом.

Я бы сделал что-то похожее на мою модель:

has_many :special_options

На мой взгляд:

f.select :special_options, :multiple => true

Это позволило бы избежать проблемы с сериализацией и десериализацией объектов перед их сохранением.

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