【发布时间】:2017-08-29 14:19:45
【问题描述】:
我正在尝试实现多选下拉菜单,但我遇到了一些问题。
1) 在我的情况下,多个下拉菜单来了,我无法弄清楚
2)如果我编辑任何用户,他应该在多选下拉菜单中选择默认的所有标签。所有标签都应该出现,这样如果他想更新他的标签或更改他的标签,他就可以做到。
用户.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
标签.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
users/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>
【问题讨论】:
标签: ruby-on-rails ruby mongodb ruby-on-rails-5 nested-attributes