gpt4 book ai didi

ruby-on-rails - Rails 5 - 如何使用自动完成功能将嵌套对象动态添加到表单中

转载 作者:行者123 更新时间:2023-12-02 01:09:37 25 4
gpt4 key购买 nike

我有 3 个模型 - team、user 和 team_user (has_namy: through)。以编辑和新团队的形式,能够使用自动完成输入动态添加该团队的成员。

应用程序/模型/user.rb

class User < ApplicationRecord
has_many :team_users
has_many :teams, through: :team_users
accepts_nested_attributes_for :team_users, :teams, allow_destroy: true
end

应用程序/模型/team.rb

class Team < ApplicationRecord
has_many :team_users
has_many :users, through: :team_users
accepts_nested_attributes_for :team_users, allow_destroy: true, reject_if: proc { |a| a['user_id'].blank? }
end

应用/模型/team_user.rb

class TeamUser < ApplicationRecord
belongs_to :team
belongs_to :user
accepts_nested_attributes_for :team, :user, allow_destroy: true
end

我需要这样的东西:

enter image description here

我遇到的问题:

  • Cocoon Gem 仅生成空字段或我将在呈现模板时创建的字段。我需要找到一个用户并将他添加到团队中(在不可编辑的字段中)
  • 如果我使用 AJAX,@team = Team.new 仅在 TeamsController 中的新操作中运行,Rails 不记得创建的 @team,当 AJAX 试图创建 team_user 对象时。要创建 team_user 模型的对象需要运行 @team.team_users.build(user_id: params[:user_id])。我从自动完成字段获得的 user_id,但不知道 @teamteam_id(例如,在 new 操作 TeamsController)。

最佳答案

1.

在此示例应用程序中,rail263 example application ,我使用 cocoon、simpleform 和 select2 创建一个可搜索的下拉框来搜索姓名列表以将乘客添加到租赁记录。

我相信这就是您想要的用例。

执行此操作的部分在这里:Partial for passenger lookup

它使用 cocoon 回调来为每个新乘客运行 select2 查找。

rental record model ,协会是:

 belongs_to :customer
belongs_to :vehicle

# delete associated records..
has_many :passengers, dependent: :destroy
has_many :pasenger_lists, :through => :passengers, :class_name => 'PasengerList'

accepts_nested_attributes_for :pasenger_lists
accepts_nested_attributes_for :passengers, allow_destroy: true

激活 select2 下拉菜单的回调在这里:callback

  $('#passengers')
.on('cocoon:after-insert', function() {
$(".dgselect2").select2({
});

在您的代码中,您是否将强参数中所需的项目列入白名单?看这里:controller

params.require(:rental_record).permit(
:customer_id, :vehicle_id, :start_date, :end_date, :lastUpdated,
passengers_attributes: [:id, :description, :name, :output, :pasenger_list_id, :_destroy , pasenger_lists_attributes: [:id, :clocknum, :name, :active, :_destroy]]
)

2.

我在这个应用程序中也做了同样的想法:training app

只是不同型号的rail263 app。这是沿着同样的路线。我使用 rail263 来开发用于培训应用程序的想法。

您可以在此处试用培训应用程序:demo
- 使用用户 = reg 和密码 = a2a2 登录
- 单击 add tr_training_employee 按钮以查看其工作情况。

enter image description here


3.

如果您对这个想法感兴趣,我可以与您一起编辑这篇文章以包含更完整的答案,并为以后可能阅读此主题的其他人解释它是如何工作的。让我知道。


相关:cocoon issue

关于ruby-on-rails - Rails 5 - 如何使用自动完成功能将嵌套对象动态添加到表单中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45638941/

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