Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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 Rails 4强参数突然停止工作?_Ruby On Rails_Ruby_Twitter Bootstrap - Fatal编程技术网

Ruby on rails Rails 4强参数突然停止工作?

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突然停止拾取用
引导数据采集器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
对象。