gpt4 book ai didi

javascript - 是否可以基于 Rails 4 中选定的 HTML 元素以相同的形式创建多个对象?

转载 作者:行者123 更新时间:2023-12-03 01:16:45 25 4
gpt4 key购买 nike

这是场景:

假设您有一个日历应用程序,您想要在其中添加一个事件到多天。理想情况下,您只需单击要添加事件的日期即可。然后,您需要填写一个表单,其中包含事件名称以及事件的开始和结束时间,然后 Rails 会自动将事件添加到所有选定的日期。

我有 3 个模型:CalendarPeriod 模型、Weekday 模型和 Event 模型。它们按如下方式链接在一起:

class CalendarPeriod < ActiveRecord::Base
has_many :weekdays
end

class Weekday < ActiveRecord::Base
belongs_to :calendar_period
has_many :events
end

class Event < ActiveRecord::Base
belongs_to :weekday
end

CalendarPeriod 具有 :start_time 和 :end_time 属性。

工作日有一个 :date 属性。

事件也有 :start_time 和 :end_time 属性。

所有属性都是日期时间类型,并且外键也得到正确处理。

我有一个基于 :start_time 和 :end_time 属性生成 CalendarPeriod 的表单。在创建操作中,我还为 CalendarPeriod 中的每一天生成一个工作日。所有这些都运行良好。然后,我有一个基于 CalendarPeriod 及其关联工作日呈现“日历”的 View 。

我的问题是:

是否可以生成一个表单,让我根据我点击的工作日数量同时创建多个事件?我考虑过使用 JavaScript 向我单击的每个工作日元素添加一个类,然后使用 AJAX 呈现创建事件的表单。这可能吗?如果是这样,请分享您对我如何实现此功能的想法。

最佳答案

检查nested_form
这是一个很好理解的截屏视频 screencast

这应该适用于您想要实现的事情。

包括

gem "nested_form"

在你的 Gemfile 中。

如果您使用 Assets 管道,请在 application.js 中添加以下行

//= require jquery_nested_form

给出这样的关联,
calendar_period.rb

has_many :weekdays, dependent: :destroy<br />
has_many :events, :through => :weekdays

accepts_nested_attributes_for :weekdays
accepts_nested_attributes_for :events

工作日.rb

belongs_to :calendar_period
has_many :events, dependent: :destroy

accepts_nested_attributes_for :events

事件.rb

belongs_to :weekday

创建表单对象如下:calendar_period_controller.rb

def new
@calendar_period = CalendarPeriod.new
@weekday = @calendar_period.weekdays.build
@event = @weekday.events.build
end

def calendar_period_params
params.require(:calendar_period).permit(:start_time, :end_time,
weekdays_attributes: [:id, :param1, :param2,
events_attributes: [:id, :start_time, :end_time]])
end

使您的表单如下所示:

<%= nested_form_for @calendar_period do |f| %>
<%= f.text_field :start_time %>
<%= f.link_to_add "Add weekday", :weekdays %>
<%= f.fields_for :weekdays do |weekdays_form| %>
<%= weekdays_form.text_field param1 %>
<%= weekdays_form.link_to_add "Add event", :events %>
<%= weekdays_form.fields_for do |events_form| %>
<%= events_form.text_field :start_time %>
<%= events_form.link_to_remove "Remove this event" %>
<% end %>
<%= weekdays_form.link_to_remove "Remove this weekday" %>
<% end %>
<% end %>

关于javascript - 是否可以基于 Rails 4 中选定的 HTML 元素以相同的形式创建多个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51980391/

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