选择表单内的活动管理员 has_one 重复
Posted
技术标签:
【中文标题】选择表单内的活动管理员 has_one 重复【英文标题】:active admin has_one duplication inside the select form 【发布时间】:2020-12-08 22:03:31 【问题描述】:我的活动管理员代码的输入让我可以选择所有重复的地址 我希望选择表单中没有任何重复的地址@
万一新
<%= form_for @case,:url => :action => :create, :id => @user.id do |f| %>
Address:<br>
<%= f.select :address, options_for_select(@user.addresses.all.pluck(:name,:id), @case.address&.id) %><br><br><br>
Patient First Name:<%= f.text_field :pt_first_name, class: "textbox" ,required: "required" ,placeholder: "Patient Name"%>
Patient Last Name:<%= f.text_field :pt_last_name, class: "textbox" ,required: "required" ,placeholder: "Patient Name"%>
<% end %>
在活跃的管理 case.rb 中
ActiveAdmin.register Case do
permit_params :user_id, :product_ids,:step_ids , :pt_first_name,:pt_last_name,
:date_received, :due_date, :shade, :mould, :upper_lower,:invoice,:implant_brand, :implant_quantity,address_attributes: [ :name]
form do |f|
f.inputs do
f.input :user
f.inputs "address", for: [:address, f.object.address || Address.new] do |meta_form|
meta_form.input :name, :as => :select, :collection => Address.order(name: :desc).collect |address| [address.name, address.id]
end
f.input :pt_first_name
f.input :pt_last_name
【问题讨论】:
【参考方案1】:你需要使用distinct
..看看here for clear explanation
所以,这一行:
<%= f.select :address, options_for_select(@user.addresses.all.pluck(:name,:id), @case.address&.id) %><br><br><br>
应该是这样的:
<%= f.select :address, options_for_select(@user.addresses.distinct.pluck(:name,:id), @case.address&.id) %><br><br><br>
还要注意@user.addresses.all
与@user.addresses
相同
【讨论】:
嗨 Khaled,我说的是活动管理员代码。你写的那个已经在工作了 这个f.inputs "address",为:[:address, f.object.address ||地址.new] 做 |meta_form| meta_form.input :name, :as => :select, :collection => Address.order(name: :desc).collect |address| [address.name, address.id] 我想它也会接近我写的内容。 Address.order(name: :desc).distinct.collect 不,它不起作用。重复太奇怪了以上是关于选择表单内的活动管理员 has_one 重复的主要内容,如果未能解决你的问题,请参考以下文章