Как мне создать выпадающий список в форме Rails, где пользователь может изменить значение по умолчанию?

#ruby-on-rails #ruby #simple-form

#ruby-on-rails #ruby #простая форма

Вопрос:

Я хотел бы иметь выпадающий список в моей форме Rails, где пользователи могли бы выбирать район города, например «Марчмонт», «Нью-Таун», «Бабертон» и т.д., При добавлении заказа. Я бы хотел, чтобы после того, как они сделали выбор, это было выбрано по умолчанию в последующие разы, когда они используют форму для добавления заказа (чтобы им не приходилось постоянно его выбирать), но также чтобы они могли изменить свой выбор в любое время. Надеюсь, это имеет смысл. Я использую Simple Form gem. Заранее спасибо! 🙂

Комментарии:

1. Вы могли бы добавить поле default_city_area в User модель, затем сохранить выбранное значение в этом поле и использовать его в качестве значения по умолчанию для вашей формы в следующий раз.

Ответ №1:

@Steve

Я сделаю пару предположений.

1.) вы знаете, как создавать формы в движке шаблонов rails. 2.) вы понимаете, как создать выпадающее меню, используя Simple Form gem

Итак, у вас есть пара вариантов, основанных на том, чего вы на самом деле хотите достичь. Исходя из того, что вы кратко описали, похоже, что у вас есть какая-то ситуация с электронной коммерцией / оформлением заказа, в которой вы хотите автоматическое завершение, чтобы упростить ее для пользователя.

существует несколько подходов к хранению этих данных.

Сохранение пользовательских данных.

1.) Сохраните его прямо в пользовательской модели в разделе district_of_last_order

2.) Сохраните его прямо в модели заказа, которую заказывает пользователь has_many . Затем вы можете выбрать городской округ первого заказа и указать его

Лично я бы предпочел # 2, поскольку вы, вероятно, хотите иметь возможность тесно связывать порядок с пользователем, и сохранение этой информации дважды является избыточным, поскольку вы всегда можете сделать что-то вроде current_user.orders.first.district или что-то еще,

в вашем ERB, где вы создаете форму, вы можете затем сделать что-то в этом роде:

 <%= simple_form_for(@order) do |f| %>

... other input fields 

<% if current_user.orders.first %>
  <%= f.input as: :select selected: current_user.orders.first.district %>
<% else %>
  <%= ... your regular dropdown menu here without the default  %>
<% end %>


... rest of your form
  

Ответ №2:

Если у вас есть возможность использовать gems, у меня были хорошие результаты с select2-rails.