Rails: выберите значение помощника после неудачного создания - PullRequest
1 голос
/ 07 декабря 2010

У меня есть вложенная форма, например:

<% form_for @invoice do |f| %>
 <%= render :partial => "invoice_item_fields", :locals => {:f => f} %>
<% end %>

и _invoice_items_fields:

<% f.fields_for :invoice_items do |builder| %>
 <%= link_to_remove_fields "remove", builder %>
 <%= builder.collection_select(:product_id, Product.all, :id, :name) %>
 <%= builder.text_field :quantity, :size => 4,%>
<% end %>

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

<%= builder.collection_select(:product_id, Product.all, :id, :name,
:selected => @selected_product) %>

, но дело в том, что приложение может иметь много: invoice_items, поэтому я неНе знаю, что делать с полем выбора «запомнить» значения.

Спасибо.

1 Ответ

0 голосов
/ 07 декабря 2010

Проблема такого рода часто связана с тем, что id продукта является целым числом, но product_id, который конструктор форм сравнивает с тем, что он является строкой.Если это проблема, исправление из отдела "не красиво, но работает" - это позвонить to_i:

builder.collection_select(builder.object.product_id.to_i, Product.all, :id, :name)

Я бы хотел увидеть более хороший способ сделать это.

Другая вещь, которая часто доставляет неприятности при отладке селекторов, заключается в том, что если вы обновляете страницу, Firefox оставляет выборку на выделенной записи - он больше не просматривает HTML и выбирает то, что сейчас говорит, что нужно выбрать.Это означает, что если у вас изначально неправильно выбран атрибут, затем исправьте код и нажмите обновить, ваш браузер фактически не покажет вам изменения.

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