在一个项目序列中,我在下拉菜单方面确实很艰难。 因此,我有两个模型
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上插入地址作为表单的有效参数。
有什么建议吗?
更新
<%= 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,New York(我将此地址分配给控制台中的current_user)
答案 0 :(得分:1)
我真的不知道选项2的意思,您必须更加具体。按照选项1,据我所知,您想做一个下拉菜单,其中每行都有相应用户的用户名,姓氏和地址。如果是这样,您可以执行以下操作:
<%= form_with model: @user do |user| %>
<%= user.select :id, list: User.all.collect{|b| ["#{b.username} #{b.lastname}: #{b.address}"]} %>
<% end %>
编辑: 我可以看到您确实发布了有关“动态下拉菜单”的文章,并且我认为我对使用Option 2所做的尝试有了更好的了解。因此,基本上,您应该检查终端上的路由并建立link_to ,它将链接到该路线。
在您的终端上输入rails路线,查看创建新用户并使用link_to的路线,例如:
<%= link_to "Link to new form", your_route %>
然后您可以执行User.new表单并将页面重定向到self。