:resources users do :resources predictionsend
当我访问users / 1 / predictions / new时,我需要创建6条预测记录,并立即将它们提交给数据库.
在我的Predictions控制器中:
before_filter :load_userdef new 3.times { @user.predictions.build }enddef create @prediction = @user.predictions.new(params[:prediction]) if @prediction.save redirect_to @user,:notice => 'Prediction added' else redirect_to @user,:notice => 'Unable to add' endenddef destroy @prediction = @user.prediction.find(params[:ID]) @prediction.destroy redirect_to @user,:notice => "Prediction deleted"endprivatedef load_user @user = current_userend
在我的预测new.HTML.erb中:
<%= form_for ([@user,@user.predictions.new]) do |f| %><div > <%= f.label :position %> <%= f.text_fIEld :position %></div><div > <%= f.label :athlete_ID,'Athlete'%> <%= f.collection_select(:athlete_ID,Athlete.all,:ID,:name,:prompt => 'Select an athlete' )%></div><div > <%= f.label :race_ID,'Race'%> <%= f.collection_select(:race_ID,Race.upcoming,:prompt => 'Select a race' )%></div><div ><%= f.submit %></div><% end %>
这显示并仅提交一条记录而不是3.我想我可能必须使用:accepts_nested_attributes_for,但是我不需要同时创建和更新用户模型.现有用户将为多场比赛一次创建预测3条记录,因为这是一款奇幻体育应用.
解决方法 我认为第一个项目,嵌套路线可能不是您正在寻找的方法.这可能会将您降低到表单上的1个新模型预测记录.您确实需要在模型中使用accepts_nested_attributes_for.使用该set使用form_for(如果可能,使用simple_form_for,使用simple_form gem).然后使用代码
form_for @user do | f |
使用f.fIElds_for:预测
用户控制器保存方法还将自动验证并保存嵌套记录.
你可能知道Ryan Bates对此有很好的railscasts.
总结以上是内存溢出为你收集整理的ruby-on-rails – 多个记录提交而不嵌套全部内容,希望文章能够帮你解决ruby-on-rails – 多个记录提交而不嵌套所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)