Как поместить выбранное значение в форму рельсов?

Вот мой хамл-код:

-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

Другие вопросы по тегам