gpt4 book ai didi

ruby-on-rails - 如何在 Rails 的表单中输入连接表字段

转载 作者:行者123 更新时间:2023-12-04 18:01:35 24 4
gpt4 key购买 nike

这是我的结构:

class Student
has_many :fruits, through: :students_fruits
end

class Fruit
has_many :students, through: :students_fruits
end

class StudentFruit
belongs_to :student
belongs_to :fruit
end

create_table "students_fruits", force: :cascade do |t|
t.integer "student_id"
t.integer "fruit_id"
t.boolean "own"
end

当我创建 Student 实例时,我可以选择水果。

但是,如何在选择水果的同时输入own字段呢?

例如:

Fruits      Own

☑apple ☑

☑pear □

☑orange ☑

这是我当前的 View ,我想将 own 字段添加到表单中:

= simple_form_for(@student) do |f|
= f.error_notification

.form-inputs
= f.input :name
= f.association :fruits, as: :check_boxes

.form-actions
= f.button :submit

最佳答案

您需要使用 fields_foraccepts_nested_attributes_for :

#app/models/student.rb
class Student < ActiveRecord::Base
has_many :student_fruits
has_many :fruits, through: :student_fruits
accepts_nested_attributes_for :student_fruits
end

#app/controllers/students_controller.rb
class StudentsController < ApplicationController
def new
@student = Student.new
@fruits = Fruit.all
@fruits.each { @student.student_fruits.build }
end

private

def student_fruits_fields
params.permit(:student).permit(student_fields_attributes: [:fruit_id, :own])
end
end

这将允许您使用 fields_for:

#app/views/students/new.html.erb
<%= simple_form_for @student do |f| %>
<%= f.simple_fields_for :student_fruits, @fruits do |sf| %>
<%= sf.input :fruit_id, as: :check_box #-> this needs fixing %>
<%= sf.input :own, as: :boolean %>
<% end %>
<% end %>

关于ruby-on-rails - 如何在 Rails 的表单中输入连接表字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34486844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com