无法在rails 3.2中正确获取参数

时间:2014-07-07 18:34:30

标签: ruby-on-rails-3 parameters controller fixnum

我有以下控制器代码:

@question_group = QuestionGroup.find(params[:id])
@old_order = @question_group.ordering
@new_order = params[:ordering].to_i
  if @old_order < @new_order

参数包括:

Parameters: { "ordering"=>"16", "course_id"=>"8"}

问题是原来params [:ordering]不是Fixnum。这就是我添加to_i的原因。现在它是一个Fixnum,但它总是0.我不明白为什么它不起作用。

2 个答案:

答案 0 :(得分:0)

如果params[:ordering]实际上是字符串"16",那么params[:ordering].to_i应该返回Fixnum 16

我会添加调试信息,并确保检查params[:ordering]的值。它很可能是nil。如果为零,则params[:ordering].to_i将返回0.

答案 1 :(得分:0)

问题是我使用的是form_for,它在html中创建了name=model[:ordering]。即使它在日志中显示为ordering=>"3",为了访问控制器中的参数,我需要params[:model][:ordering]