Ruby on rails Rails 4强参数突然停止工作?
Rails突然停止拾取用Ruby on rails Rails 4强参数突然停止工作?,ruby-on-rails,ruby,twitter-bootstrap,Ruby On Rails,Ruby,Twitter Bootstrap,Rails突然停止拾取用引导数据采集器Rails输入的值,至少我只注意到它带有输入的日期 这是一个binding.pry呼叫 16:def创建 17:@batch=batch.new(批参数) =>18:binding.pry 19: 20:if@batch.save 21:将_重定向到:根目录 22:还有吗 23:渲染“新” 24:完 25:完 [1] 撬动(#)>参数 =>{“utf8”=>“✓", “真实性令牌”=>“/0IzN2EfU7MHWnwLeL/RREsqo3C7vtintD8
引导数据采集器Rails
输入的值,至少我只注意到它带有输入的日期
这是一个binding.pry呼叫
16:def创建
17:@batch=batch.new(批参数)
=>18:binding.pry
19:
20:if@batch.save
21:将_重定向到:根目录
22:还有吗
23:渲染“新”
24:完
25:完
[1] 撬动(#)>参数
=>{“utf8”=>“✓",
“真实性令牌”=>“/0IzN2EfU7MHWnwLeL/RREsqo3C7vtintD8rbmW4rsbmGhV9Q8crc7DerCAnN+CDZ2Sf4OhSgM1aVl8sl3DLfQ=”,
“批次”=>{“名称”=>“批次3”,“日期”=>“2016年2月14日”},
“提交”=>“创建新批”,
“控制器”=>“批次”,
“操作”=>“创建”}
[2] 撬(#)>@批
=> #
如您所见,参数batch
具有有效的日期和名称值,但@batch
对象只拾取名称,而不拾取日期。它在一小时前工作,我唯一更改的是UI的一些引导元素
我的强参数:
def批处理参数
参数require(:batch).permit(:name,:date)
结束
用于输入值的表单:
'日期选择器''>
从下面的结果可以看出
这不是解析的有效日期“2016年2月14日”
请尝试使用valid date并告诉我它是否有效,从下面的结果中可以看出 这不是解析
的有效日期“2016年2月14日”
请尝试使用有效日期,并告诉我它是否有效。Rails无法立即解析此日期格式。但您可以向模型中添加自定义setter来解决此问题:
# in app/models/batch.rb
def date=(string)
write_attribute(:date, DateTime.strptime(string, '%m/%d/%Y'))
end
Rails无法立即解析此日期格式。但您可以向模型中添加自定义setter来解决此问题:
# in app/models/batch.rb
def date=(string)
write_attribute(:date, DateTime.strptime(string, '%m/%d/%Y'))
end
数据库中的
date
列的类型是什么?“突然”和“我唯一更改的是UI的一些引导元素”不一致。您是否反转了更改以查看是否“突然”“解决问题了吗?然后,如果是这样,你仔细地做一个改变,看看它是否再次破裂。一旦你发现问题,你就可以想办法解决它。“”在最后一个链接中对此有很好的信息。数据库中的date
列的类型是什么?“突然”和“我唯一更改的是UI的一些引导元素”不匹配。你有没有改变你的改变,看看是否“突然”解决了问题?然后,如果是这样,你仔细地做一个改变,看看它是否再次破裂。一旦你发现问题,你就可以想办法解决它。“”在最后一个链接中对此有很好的信息。嗯。。我有几个模型使用相同的日期格式,所以我会在几个地方有相同的代码,这对我来说就像是代码味道。是否最好将数据库中的列类型切换为Date
,而不是DateTime
?使用日期有什么缺点吗?Ruby新手,所以我不知道不同日期类的主要区别和缺点。不,这不能解决你的问题。Rails提供了date\u select
helper方法,因此需要一个包含多个值的散列(date(1i)
作为年份,date(2i)
是月份,…),因为这是date\u select
方法返回的格式。但是引导日期选择器返回一个字符串,该字符串不符合Rails约定。如果你不遵循Rails的惯例,那么你必须自己实现逻辑,这通常是Rails的魔法完成的……所以我尝试了代码,但仍然出错,我在custom setter方法中添加了一个binding.pry
,但它没有触发,所以我猜在@batch=batch.new中,出于某种原因没有调用它(批次参数)
。我最终使用了before\u filter:some\u custom\u method
,然后通过解析字符串在方法中创建了一个DateTime
对象。嗯……我有几个模型使用相同的日期格式,所以我会在几个地方使用相同的代码,这对我来说就像代码味道一样。在数据库中切换列类型会更好吗用Date
代替DateTime
?使用Date
有什么缺点吗?Ruby newbie,所以我不知道不同日期类的主要区别和缺点。不,这并不能解决您的问题。Rails提供了Date\u select
助手方法,因此需要一个包含多个值的哈希(date(1i)
作为年份,date(2i)
是月份,…),因为这是由date\u select
方法返回的格式。但是引导日期选择器返回一个字符串,它不遵循Rails约定。如果不遵循Rails约定,则必须自己实现通常由Rails魔术完成的逻辑…因此我尝试了代码,但仍然出错,我在自定义setter方法中添加了一个binding.pry
,但它没有触发,所以我猜测它在@batch=batch.new(batch\u params)
中没有被调用。我最后使用了before\u filter:some\u custom\u方法
,然后通过解析字符串在方法中创建了一个DateTime
对象。