我有以下控制器代码:
@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.我不明白为什么它不起作用。
答案 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]
。