gpt4 book ai didi

ruby-on-rails - 同时创建两个对象

转载 作者:太空宇宙 更新时间:2023-11-03 17:36:48 27 4
gpt4 key购买 nike

我试图同时创建两个对象,但由于某种原因,我的第二个对象的字段是空白的。

模型是:

Users: id, name, last, email, password ...
Locations: address, longitude, latitude.

这样的关系是:

User has_many location
Location belongs_to users

事件 Controller 创建方法:

def create
@event = current_users.events.build(params[:event])
@location = @event.locations.build(params[:location])
@location.longitude = params[:longitude]
@location.latitude = params[:latitude]
respond_to do |format|
if @location.save
@location.longitude = params[:longitude]
@location.latitude = params[:latitude]
if @location.save
if @event.save
format.html { redirect_to @event, notice: 'Event was successfully created.' }
format.json { render json: @event, status: :created, location: @event }
else
format.html { render action: "new" }
format.json { render json: @event.errors, status: :unprocessable_entity }
end
end
end
end
end

和形式:

  <%= f.hidden_field :latitude %>
<%= f.hidden_field :longitude %>

但是,当我创建位置时,longitudelatitude 为空白,但我的 event_id 已填满。有没有更好的方法同时创建两个对象?

最佳答案

您的两个字段是使用表单生成器生成的 f .我怀疑它们在 form_for 里面称呼。这样做的结果是字段名称将嵌套在模型的命名空间中。这意味着 params[<model name>][:longitude]params[<model name>][:latitude]应该有字段的内容。

您可以检查您的控制台以查看 Rails 收到了哪些参数。或者,您可以将参数散列打印到控制台以检查其内容:p params (在你的行动中的某个地方)。

因此,为了让一切正常工作,您需要访问正确的参数。 (类似 params[:location][:longitude] )

关于ruby-on-rails - 同时创建两个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14114114/

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