Rails date_select值始终为0

时间:2016-04-13 12:12:35

标签: ruby-on-rails

我已经尝试了一段时间,但我似乎无法访问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.

任何建议都将不胜感激。

2 个答案:

答案 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 %>