1

我试图实现多选择下拉菜单,但我面临一些问题。实现具有嵌套属性的多选下拉菜单

1)在我的情况下多次下拉来了,我无法弄清楚

2)如果我修改任何用户所有这一切,他应该来多选择降选择默认标签down.Also所有的标签都应该出现,以便如果他想更新他的标签或更改他的标签,他可以做到。

User.rb

class User 
     # Include default devise modules. Others available are: 
     # :confirmable, :lockable, :timeoutable and :omniauthable 
     include Mongoid::Document 
     include Mongoid::Timestamps 

    devise :database_authenticatable, :registerable, 
      :recoverable, :rememberable, :trackable, :validatable, :confirmable#, :omniauthable, :omniauth_providers => [:facebook] 


     has_many :tags,dependent: :destroy 
     accepts_nested_attributes_for :tags,allow_destroy: true 

    end 

Tag.rb

class Tag 
     include Mongoid::Document 
     include Mongoid::Timestamps 

     belongs_to :user 

     field :name, :type => String 

     field :created_at, :type => DateTime 
     field :updated_at, :type => DateTime 


    end 

users_controller.rb

class UsersController < ApplicationController 
    before_action :authenticate_user! 


    def index 
     @users = User.all - [User.find_by(status: true)] 
    end 


    def show 
     @user = User.find(params[:id]) 
    end 

    def edit 
     @user = User.find(params[:id]) 
    end 


    def update 
     @user = User.find(params[:id]) 
     if @user.update_attributes(user_params) 
      redirect_to users_path  
     else 
      render 'edit' 
     end 
    end 

    private 

     def user_params 
      params.require(:user).permit(:first_name, tags_attributes: [:id, :name, :_destroy]) 
     end 


end 

个用户/ edit.html.erb

<section class="content"> 
     <div class="row"> 
     <div class="col-md-3"> 
     </div> 
     <div class="col-md-6"> 

      <div class="box box-warning"> 
      <div class="box-header with-border"> 
       <h3 class="box-title">Update User</h3> 
      </div> 

      <div class="box-body"> 
      <%= form_for @user do |f| %> 

       <div class="form-group"> 
        <label>First Name</label> 
       <%= f.text_field :first_name, :required => 'required',:class => 'form-control' %> 
       </div> 



       <div class="form-group"> 
        <label>Tags</label> 
        <%= f.fields_for :tags do |user_tag| %> 



         <%= user_tag.select :name, User.find_by(id: params[:id]).tags.collect{|tag| [tag.name,tag.id]} ,{:prompt => "--select state--"},:class => 'form-control',multiple: true %> 

        <% end %> 
       </div> 

       <div class="box-footer"> 
        <%= f.submit 'Submit',class: 'btn btn-primary' %> 
       </div> 


      <%end %> 
      </div> 

      </div> 

     </div> 

     </div> 

    </section> 

enter image description here

回答

0

根据APIdoc

给予嵌套fields_for呼叫该块将在集合中被重复用于 每个实例

+0

我已经阅读过API,但这没有帮助 – user6551529