选择并保存多个复选框,其中包含简单的

时间:2018-07-27 19:34:51

标签: ruby-on-rails

我正在尝试使用简单表单和嵌套表单来实现多重选择并保存。

我的视图以卡格式(Bootstrap)显示所有具有名称和描述的分支。在名称旁边,我想有一个复选框。我只想保存所选的

= simple_form_for(@my_branch, html: { class: 'form-horizontal' }) do |f|
  = f.error_notification

  = f.input :user_id, input_html: { value: current_user.id}, as: :hidden

  - @branches.each do |branch|
    = f.simple_fields_for :my_branch_items do |b|
      .col-md-4
        .card{:style => "width: 18rem;"}
          .card-header
            = branch.name
            = b.input :branch_id, input_html: { value: branch.id }, as: :radio_buttons
          %ul.list-group.list-group-flush
            = branch.description


  .form-group
    = f.submit 'Save', class: 'btn btn-primary'

这是关联

class Branch < ApplicationRecord
 has_many :my_branch_items
end

class MyBranch < ApplicationRecord
  belongs_to :user
  has_many :my_branch_items
  accepts_nested_attributes_for :my_branch_items, allow_destroy: true, reject_if: proc { |att| att['name'].blank? }
end

class MyBranchItem < ApplicationRecord
  belongs_to :my_branch
  belongs_to :branch
end

还有控制器

class MyBranchesController < BaseController
  before_action :set_my_branch, only: [:show]
  def new
    @branches = Branch.all
    @my_branch = MyBranch.new
  end

  def create
    @my_branch = Quiz.new(my_branch_params)

    if @my_branch.save
      redirect_to my_branch_path(@my_branch), notice: 'Thanks for taking the Branch Quiz' 
    else
      render :new 
    end
  end

  def show
  end

  private

    def set_my_branch
      @my_branch = MyBranch.find(params[:id])
    end

    def my_branch_params
      params.require(:my_branch).permit(:name, :note, :user_id, my_branch_items_attributes: MyBranchItem.attribute_names.map(&:to_sym).push(:_destroy))
    end
end

1 个答案:

答案 0 :(得分:0)

已修复!

表格

= simple_form_for(@my_branch, html: { class: 'form-horizontal' }) do |f|
  = f.error_notification

  = f.input :user_id, input_html: { value: current_user.id}, as: :hidden

  - @branches.each do |branch|
    = f.simple_fields_for :my_branch_items do |b|
      .col-md-4
        .card{:style => "width: 18rem;"}
          .card-header
            = branch.name
            = b.input_field :branch_id, checked_value: branch.id, as: :boolean, boolean_style: :inline, include_hidden: false
          %ul.list-group.list-group-flush
            = branch.description


  .form-group
    = f.submit 'Save', class: 'btn btn-primary'

模型正在使用表中不存在的空白验证字段。

class MyBranch < ApplicationRecord
  belongs_to :user
  has_many :my_branch_items, dependent: :destroy
  accepts_nested_attributes_for :my_branch_items, allow_destroy: true, reject_if: proc { |att| att['branch_id'].blank? }
end