【发布时间】:2014-11-12 16:56:40
【问题描述】:
尝试将带有年份、月份和日期的 date_select 发布到数据库,但无法做到。我收到以下未经许可的参数。
这是 binding.pry 结果
17: def create
=> 18: binding.pry
19: @timeslot = Timeslot.new(timeslot_params)
20:
21: if @timeslot.save
22: flash[:notice] = "Your timeslot was created."
23: redirect_to timeslots_path(@timeslot)
24: else
25: render :new
26: end
27: end
[1] pry(#<TimeslotsController>)> params
=> {"utf8"=>"✓",
"authenticity_token"=>"9QH4nSgC9ov2Rj+cm/hruebc94OI63eUWJZoqWL9qzM=",
"timeslot"=>{"name"=>"5.30pm", "starts_at(1i)"=>"2014", "starts_at(2i)"=>"11", "starts_at(3i)"=>"13"},
"commit"=>"Create Timeslot",
"action"=>"create",
"controller"=>"timeslots"}
[2] pry(#<TimeslotsController>)> params.require(:timeslot).permit(:name, :"starts_at(1i).to_i", :"starts_at(2i).to_i", :"starts_at(3i).to_i")
Unpermitted parameters: starts_at(1i), starts_at(2i), starts_at(3i)
=> {"name"=>"5.30pm"}
[3] pry(#<TimeslotsController>)> params.require(:timeslot).permit(:name, starts_at: [])
Unpermitted parameters: starts_at(1i), starts_at(2i), starts_at(3i)
=> {"name"=>"5.30pm"}
[4] pry(#<TimeslotsController>)> params.require(:timeslot).permit(:name, starts_at: [(1i), (2i), (3i)])
Unpermitted parameters: starts_at(1i), starts_at(2i), starts_at(3i)
=> {"name"=>"5.30pm"}
[5] pry(#<TimeslotsController>)>
这是控制器的强参数白名单
def timeslot_params
params.require(:timeslot).permit(:name, :"starts_at(1i).to_i", :"starts_at(2i).to_i", :"starts_at(3i).to_i")
end
这是表格
<div class='well'>
<%= simple_form_for @timeslot do |f| %>
<div class='control-group'>
<%= f.label :name %>
<%= f.text_field :name %>
</div>
<div class='control-group'>
<%= f.label :starts_at %>
<%= f.date_select :starts_at %>
</div>
<%= f.submit(@timeslot.new_record? ? 'Create Timeslot' : 'Update Timeslot', class: 'btn btn-primary')%>
<% end %>
</div>
我正在使用 Rails 4.1.6 / ruby 2.1.3p242(2014-09-19 修订版 47630)[x86_64-darwin13.0]。
“starts_at”的数据库模式类型是日期时间格式。
任何帮助表示赞赏,在此先感谢。
【问题讨论】:
-
为什么不只是
params.require(:timeslot).permit(:name, :starts_at)? -
你能添加你的模型吗?
-
@Зелёный 感谢您在我的回答下发表评论,我已经查看了问题并发现,这与我几天前偶然发现的情况不同,所以,我已经删除了答案。
标签: ruby-on-rails ruby