Как сделать выпадающее меню в Rails? - PullRequest
0 голосов
/ 16 апреля 2019

Мне действительно тяжело с выпадающими в одной последовательности проекта. Следовательно, у меня есть две модели

User.rb

class User < ApplicationRecord
  has_many :addresses

end

и Address.rb

class Address < ApplicationRecord
  belongs_to :user

end

Затем у меня есть процесс первого шага, где пользователь вводит свой адрес. Есть выпадающее меню, которое должно выглядеть так:

Вариант 1 : # {current_user.first_name} {current_user.last_name}, {current_user.address}

Если пользователь щелкает эту опцию в раскрывающемся меню (по умолчанию) и затем продолжает, адрес должен быть взят у текущего пользователя и продолжен (это действие разрешено)

Вариант 2: Новый адрес

Если пользователь нажимает эту опцию, должна появиться новая форма, где пользователь может ввести имя, фамилию и адрес.

Я пытался использовать теги select и collection select, но, похоже, это не то, что мне нужно. Я знаю, что могу использовать метод onChange js для формы, но я не знаю, как вставить адрес в варианте 1 в качестве допустимого аргумента для моей формы.

Есть предложения?

UPDATE

<%= form.fields_for :address do |form| %>
  <%= form.select_tag "bill address", options_for_select([[Address.where(:user_id => current_spree_user.id).collect{|b| "#{b.firstname} #{b.lastname}: #  {b.address1}, #{b.state}"}, current_user.id], ["New Adress",  ""]] %>
<% end %>

Я пытался с этим, но получил ошибку. Не удалось найти адрес с 'id' = Nella Nienow: 801 Greenfelder Court, Нью-Йорк (я назначил этот адрес current_user в консоли)

1 Ответ

1 голос
/ 16 апреля 2019

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

<%= form_with model: @user do |user| %>
<%= user.select :id, list: User.all.collect{|b| ["#{b.username} #{b.lastname}: #{b.address}"]} %>
<% end %>

РЕДАКТИРОВАТЬ: я вижу, что вы сделали сообщение о «динамическом раскрывающемся меню», и я думаю, что я получил лучшую подсказку о том, что вы пытаетесьсделать с Вариантом 2. Таким образом, вы должны проверить маршруты на своем терминале и создать ссылку, которая будет ссылаться на этот маршрут.

Введите rails route на вашем терминале, посмотрите маршрут, который создает нового пользователя, и используйте link_to, например:

<%= link_to "Link to new form", your_route %>

, а затем вы можете просто создать форму User.new и перенаправитьстраница для себя.

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