Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在rails中保存日期选择字段_Mysql_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Mysql 如何在rails中保存日期选择字段

Mysql 如何在rails中保存日期选择字段,mysql,ruby-on-rails,ruby,ruby-on-rails-4,Mysql,Ruby On Rails,Ruby,Ruby On Rails 4,如何保存日期选择字段 我认为: <%= f.date_select :dob, :start_year => Date.current.year, :end_year => 1920 %> 有道理吗 在我的数据库中,我有一个名为“dob”的字段。问题是如何在数据库中保存此字段 我使用的是Rails 4.0.2和params许可特性。我在控制器中添加了这个 params.require(:user).permit("dob(1i)", "dob(2i)", "dob(3

如何保存日期选择字段

我认为:

 <%= f.date_select :dob, :start_year => Date.current.year, :end_year => 1920 %>
有道理吗

在我的数据库中,我有一个名为“dob”的字段。问题是如何在数据库中保存此字段

我使用的是Rails 4.0.2和params许可特性。我在控制器中添加了这个

params.require(:user).permit("dob(1i)", "dob(2i)", "dob(3i)")

谷歌搜索了一下,但我没有得出公正的结论

只需从三个参数创建一个日期:

@user.dob = Date.new(params['dob(1i)'].to_i,params['dob(2i)'].to_i,params['dob(3i)'].to_i)

@user.save
仅供参考,Rails将接受一个实际字符串作为数据库中类型为
date
的列的日期。因此,如果使用返回字符串的日期选择器,如:

# if params[dob] = '2015-3-26' passed from your form
@user.dob = params[dob]
@user.save
  # in server console you'll see...
  # SQL (0.6ms)  UPDATE "users" SET "dob" = $1, "updated_at" = $2 WHERE "users"."id" = 193  [["dob", Thu, 26 Mar 2015],...
所以你可以这样做:

@user.dob = params.values.join'-'
  # =>'2015-3-26'
@user.save

当然,如果在表单和
许可证中添加任何其他参数,则该参数将不再有效。我建议你在表格上找日期选择器。使一切变得简单。

参数require(:user).permit(:dob)的问题是什么?
?我发现:在分配多参数属性时出现了1个错误[error on assignment[2015,3,24]to dob(错误数量的参数(3代表0..1)),尽管我知道这条消息与permit无关,但出于安全考虑,我学会了明确地传递它们。下面的答案对你有用吗?在
params
中,将整数作为参数。您有一个字符串。该表单不返回整数,从不返回。它总是字符串。这是一个很好的简单hack+1.但是应该是
params['dob(1i)].to_i
而不是引发错误
undef方法dob
# if params[dob] = '2015-3-26' passed from your form
@user.dob = params[dob]
@user.save
  # in server console you'll see...
  # SQL (0.6ms)  UPDATE "users" SET "dob" = $1, "updated_at" = $2 WHERE "users"."id" = 193  [["dob", Thu, 26 Mar 2015],...
@user.dob = params.values.join'-'
  # =>'2015-3-26'
@user.save