gpt4 book ai didi

nested - fields_for 不保存 Rails 5.0.1 中的嵌套参数

转载 作者:行者123 更新时间:2023-12-02 09:59:50 28 4
gpt4 key购买 nike

我对 Rails 还很陌生,尽管我已经制作了一些基本应用程序并阅读了几个教程,但这是我第一次深入研究表单内的嵌套属性以及 fields_for 的使用。

我搜索了许多类似的问题,并阅读了 fields_for 的文档,但是每当我在表单中使用 fields_for 时,我的表单似乎都没有保存。我已经在没有 fields_for 的情况下进行了测试,并按应有的方式保存(显然没有保存到嵌套数据库)。

我想做的是一个简单的事件注册,它又在单独的模型中具有一些属性和日期。

我尝试过有或没有验证,强参数中有很多不同的东西

这是我的事件模型:

class Event < ApplicationRecord
has_many :eventdates, dependent: :destroy
accepts_nested_attributes_for :eventdates

validates :name, :description, :city, :street, :postal_code, presence: true

end

Eventdate 模型:

class Eventdate < ApplicationRecord
belongs_to :event

validates :date, :start_hour, :finish_hour, :event_id, presence: true
end

事件 Controller :

class EventsController < ApplicationController

def new
@event = Event.new
@event.eventdates.build
end

def create
@event = Event.new(event_params)
if @event.save
redirect_to root_url
else
render "static_pages/home"
end
end

private

def event_params
params.require(:event).permit(:name, :description, :street, :city, :postal_code, :address_number, :additional_info,
eventdates_attributes: [:id, :date, :start_hour, :finish_hour, :event_id])
end

形式:

<%= form_for(@event, url: events_path) do |f| %>
<p>
<%= f.label :nombre %>
<%= f.text_field :name %>
</p>

<div>
<%= f.fields_for :eventdates do |eventdate_fields| %>

<%= eventdate_fields.label :fecha %>
<%= eventdate_fields.date_field :date %>

<%= eventdate_fields.label :hora_de_inicio %>
<%= eventdate_fields.time_field :start_hour %>

<%= eventdate_fields.label :hora_de_termino %>
<%= eventdate_fields.time_field :finish_hour %>
<% end %>
</div>

<p>
<%= f.label :infomación_adicional %>
<%= f.text_area :additional_info %>
</p>

<p>
<%= f.submit "Crear evento" %>
</p>
<% end %>

我很确定这是一个非常简单的表单,但不知何故根本拒绝保存到数据库中。

最佳答案

eventdate.rb 模型中,将 optional: true 附加到此行:belongs_to :event

class Eventdate < ApplicationRecord
belongs_to :event, optional: true

validates :date, :start_hour, :finish_hour, :event_id, presence: true
end

因为 Rails 将首先创建 eventdates,然后创建 event 并链接到这些 eventdates(通过更新所有 event_id > 在这些事件中)。但是在创建eventdates时,列event_idnil并且eventdates无法保存。

关于nested - fields_for 不保存 Rails 5.0.1 中的嵌套参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43335544/

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