【发布时间】:2016-12-20 17:38:32
【问题描述】:
我的模型@gig 有一个表格。我正在尝试一次创建多个具有相同属性的gigs,除了应该从数组中挑选的date。
到目前为止,只有数组中的最后一个日期,并且只有一条记录被保存。
_form.html.erb
<%= simple_form_for @gig , url: gigs_path do |form| %>
<div class="create-title">
<%= form.input :title, label: t('gig.title'), placeholder: t('placeholder.title') %>
</div>
bla... bla... bla....
<p><%= t('gig.date') %> </p>
<% if !mobile_device? %>
<%= form.input :date, as: :string, label: false, placeholder: t('placeholder.date'), multiple: true %>
<% else %>
bla... bla... bla....
<% end %>
gig_controler.rb
def create
@gigdates = params[:gig][:date].split(';')
puts @gigdates.count
@gigdates.each do |date|
puts date
@gig = Gig.create(gig_params)
@gig.date = date
end
if @gig.save
redirect_to @gig
else
Rails.logger.info(@gig.errors.inspect)
render 'new'
end
end
def gig_params
params.require(:gig).permit(:title, :location, :description, :date, :salary, :salary_cents, :salary_currency, :genre_ids => [])
end
在控制器中使用puts date,我可以看到我的日期被正确地分开了。
服务器显示ROLLBACK 被调用的次数与数组中的日期一样多,然后最终的gig 正确保存。
更新 1:
我已经更改了允许创建多条记录的控制器,我只是担心如果记录保存失败时缺少重定向或消息。
def create
@gigdates = params[:gig][:date].split(';')
@gigdates.each do |date|
@gig = Gig.new(gig_params)
@gig.date = date
@genres = Genre.where(:id => params[:choose_genres])
@gig.genres << @genres
@gig.save
end
redirect_to @gig
end
【问题讨论】:
标签: ruby-on-rails arrays database activerecord