gpt4 book ai didi

ruby-on-rails - 多条记录提交不嵌套

转载 作者:行者123 更新时间:2023-12-01 04:09:30 26 4
gpt4 key购买 nike

我确定我已经考虑过这个问题了,但我似乎无法弄清楚如何简单地一次创建和提交多个记录。我有一个用户模型和一个预测模型。用户有_许多个预测,并且一个预测属于一个用户。我已经像这样嵌套了我的路线

:resources users do 
:resources predictions
end

当我访问users/1/predictions/new时,我需要创建6条预测记录,并一次提交给数据库。

在我的预测 Controller 中:
before_filter :load_user

def new
3.times { @user.predictions.build }
end

def create
@prediction = @user.predictions.new(params[:prediction])
if @prediction.save
redirect_to @user, :notice => 'Prediction added'
else
redirect_to @user, :notice => 'Unable to add'
end
end

def destroy
@prediction = @user.prediction.find(params[:id])
@prediction.destroy
redirect_to @user, :notice => "Prediction deleted"
end

private

def load_user
@user = current_user
end

在我的预测 new.html.erb 中:
<%= form_for ([@user, @user.predictions.new]) do |f| %>
<div class="fields">
<%= f.label :position %>
<%= f.text_field :position %>
</div>
<div class="fields">
<%= f.label :athlete_id, 'Athlete'%>
<%= f.collection_select(:athlete_id, Athlete.all, :id, :name, :prompt => 'Select an athlete' )%>
</div>
<div class="fields">
<%= f.label :race_id, 'Race'%>
<%= f.collection_select(:race_id, Race.upcoming, :id, :name, :prompt => 'Select a race' )%>
</div>
<div class="actions"><%= f.submit %></div>
<% end %>

这仅显示并提交了一条记录而不是 3 条记录。我想我可能必须使用 :accepts_nested_attributes_for,但是我不需要同时创建和更新用户模型。现有用户将一次为几场比赛创建 3 条预测记录,因为这是一款梦幻体育应用。

最佳答案

我认为第一项,嵌套路由可能不是您正在寻找的方法。这可能会将您限制在表单上的 1 个新模型预测记录上。

你确实想要accepts_nested_attributes_for在你的模型中。使用该集合使用 form_for(如果可能,使用 simple_form_for,使用 simple_form gem)。然后用类似的代码
form_for @user 做 |f|
使用 f.fields_for :预测

用户 Controller 保存方法还将自动验证和保存嵌套记录。

您可能知道瑞恩贝茨 (Ryan Bates) 很棒 railscasts为了这。

关于ruby-on-rails - 多条记录提交不嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7183061/

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