Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.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
Ruby on rails 如何从控制器获取自定义表单字段——又称如何在表单中不使用日期帮助程序_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何从控制器获取自定义表单字段——又称如何在表单中不使用日期帮助程序

Ruby on rails 如何从控制器获取自定义表单字段——又称如何在表单中不使用日期帮助程序,ruby-on-rails,ruby,Ruby On Rails,Ruby,我用scaffold创建了一个表单,其中包含两个datetime字段。 我用日期选择器替换了它们,现在我正试图从控制器中获取日期。 我没有让ruby对datefields做所有的神奇工作,而是只需要使用我想要使用的字段、开始日期和停止日期,但我不知道如何从我的控制器中获取它们。提示? 谢谢 您至少有两种选择: 试着使用Time.parseparams[:start_date],它做得非常好 试着自己解析出内容。我甚至不推荐 我一直在使用Time.parse,成功率很高。但请记住,如果你的应用程序

我用scaffold创建了一个表单,其中包含两个datetime字段。 我用日期选择器替换了它们,现在我正试图从控制器中获取日期。 我没有让ruby对datefields做所有的神奇工作,而是只需要使用我想要使用的字段、开始日期和停止日期,但我不知道如何从我的控制器中获取它们。提示?
谢谢

您至少有两种选择:

试着使用Time.parseparams[:start_date],它做得非常好 试着自己解析出内容。我甚至不推荐 我一直在使用Time.parse,成功率很高。但请记住,如果你的应用程序跨越国家边界,那么数月或数天的解析可能会被逆转。i、 与2008年10月1日的美国标准相比,2008年10月1日在巴西实际上是2008年1月10日

编辑:

下面是一个在SQLite上运行的测试应用程序示例。它应该以同样的方式为你工作。如果没有,请告诉我:

>> a = Post.first
=> #<Post id: 1, title: "title 1 ", updated_by: nil, deleted_by: 1, created_at: "2009-11-23 18:48:23", updated_at: "2009-11-23 18:48:23">
>> a.updated_at = Time.parse('01/02/2010')
=> Sat Jan 02 00:00:00 -0500 2010
>> a.save
  Post Update (44.9ms)   UPDATE "posts" SET "updated_at" = '2010-02-03 12:59:32' WHERE "id" = 1
=> true
>> 

谢谢你引导我找到了答案,但我认为我的解决方案是草率的。我的日期以字符串“01/02/2010”开头。当我调用Time.parse时,它会说“参数超出范围”。有一次我让它工作,但它看起来像“2010-01-02 00:00:00-0000”,但是我的sqlite datetime字段不会接受这一点。它希望它看起来像“2010-01-02 00:00:00”。诀窍是什么?我已经在我的答案中添加了…我非常确定Time.parse应该与SQLite一起工作。是的,它正在被放入数据库中。不知道我以前做错了什么。不幸的是,它混淆了月份和日期。我的字符串格式为月/日/年。因此,Time.parse02/03/2010 2010 2010年2月3日被输入数据库,日期和月份颠倒为2010-05-02,而不是2010-02-05,这令人惊讶,我相信与你所说的相反。看起来我必须坚持我的小解析器方法。