ruby-on-rails – 多个记录提交而不嵌套
发布时间:2020-12-17 02:12:01 所属栏目:百科 来源:网络整理
导读:我确定我已经在考虑这个问题,但我似乎无法弄清楚如何简单地创建和提交多个记录.我有一个用户模型和一个预测模型.用户has_many预测,预测属于用户.我已经嵌套了我的路线 :resources users do :resources predictionsend 当我访问users / 1 / predictions / new
我确定我已经在考虑这个问题,但我似乎无法弄清楚如何简单地创建和提交多个记录.我有一个用户模型和一个预测模型.用户has_many预测,预测属于用户.我已经嵌套了我的路线
:resources users do :resources predictions end 当我访问users / 1 / predictions / new时,我需要创建6条预测记录,并立即将它们提交给数据库. 在我的Predictions控制器中: 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,:prompt => 'Select a race' )%> </div> <div class="actions"><%= f.submit %></div> <% end %> 这显示并仅提交一条记录而不是3.我想我可能必须使用:accepts_nested_attributes_for,但是我不需要同时创建和更新用户模型.现有用户将为多场比赛一次创建预测3条记录,因为这是一款奇幻体育应用. 解决方法
我认为第一个项目,嵌套路线可能不是您正在寻找的方法.这可能会将您降低到表单上的1个新模型预测记录.
您确实需要在模型中使用accepts_nested_attributes_for.使用该set使用form_for(如果可能,使用simple_form_for,使用simple_form gem).然后使用代码 用户控制器保存方法还将自动验证并保存嵌套记录. 你可能知道Ryan Bates对此有很好的railscasts. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |