Как поместить выбранное значение в форму рельсов?
Вот мой хамл-код:
-if params[:product_id]
=select_tag 'product',
options_from_collection_for_select(Product.all, :id, :name),
placeholder: "Product", required: true,
value: Product.find(params[:product_id]).name
-else
=select_tag 'product',
options_from_collection_for_select(Product.all, :id, :name),
:prompt => 'Select', placeholder: "Product", required: true
Проблема в том, что значение хорошо, когда я проверяю элемент:
<select id="product" name="product" placeholder="Product" required="required" value="Product 2">
<option value="1">Product 1</option>
<option value="2">Product 2</option>
<option value="3">Product 3</option></select>
Даже если это хорошо, выбор не имеет значение в "Продукт 2", значение элемента, да, но выбранное значение "Продукт 1".
Я не знаю почему, и я уверен, что я что-то возиться с х)
РЕДАКТИРОВАТЬ:
value: Product.find(params[:product_id]).id
value: Product.find(params[:product_id]).id.to_i
Этот вид изменений ничего не меняет в проблеме
1 ответ
Решение
Когда вы пропускаете значение параметра, оно сопоставляется с атрибутами значения тегов параметра, а НЕ с их содержимым.
Попробуйте изменить значение параметра на
value: params[:product_id].to_i
РЕДАКТИРОВАТЬ: только что понял, что предварительно выбранное значение должно быть передано в качестве последней опции для options_from_collection_for_select:
=select_tag 'product',
options_from_collection_for_select(Product.all, :id, :name, params[:product_id].to_i),
placeholder: "Product", required: true
http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html