选择表单内的活动管理员 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 重复的主要内容,如果未能解决你的问题,请参考以下文章

具有活动管理员的 Rails 双嵌套表单

如何将活动值传递给片段[重复]

has_one 与用户和客户的关联以及 Rails 视图表单

has_one 表单中的现有数据

第二阶段 第十三天 (34组团队博客)

第二阶段 第十二天 (34组团队博客)