我已经尝试了一段时间,但我似乎无法访问date_select值。
视图如下所示:
<%= form_for(@product) do |form| %>
...
<%= form.label :release_date %>
<%= date_select :@product, :release_date %>
...
提交表单后,我可以看到值肯定存在,因为POST包含:
Parameters: ... "product"=> { "@product"=>{"release_date(1i)"=>"2016", "release_date(2i)"=>"4", "release_date(3i)"=>"13"} ... }
从答案到类似的问题; How to get a Date from date_select or select_date in Rails?似乎从密钥&#34; release_date(1i)&#34;中获取值的正确代码应该是这样的:
product = params[:product]
date = product["release_date(1i)"].to_i
但是,date的值始终为0.
任何建议都将不胜感激。
答案 0 :(得分:2)
您需要更改
<%= date_select :@product, :release_date %>
到
<%= form.date_select :release_date %>
所以你会得到理想的参数
Parameters: ... "product"=> {"release_date(1i)"=>"2016", "release_date(2i)"=>"4", "release_date(3i)"=>"13"} ... }
所以你可以做到
product = params[:product]
date = product["release_date(1i)"].to_i
答案 1 :(得分:1)
由于您的form_for标记中包含do |form|
,因此您需要将release_date
绑定到表单的模型,如下所示:
<%= form.date_select :release_date %>