在表单视图中计算信息

时间:2013-01-03 14:21:18

标签: ruby-on-rails ruby-on-rails-3

<%= f.label :months, "Experience" %>
<%= f.hidden_field :months, :value => (params[:Years]*12) + params[:Months] %>
<%= number_field_tag "Years", nil, placeholder:"Years" %> Years <%= number_field_tag "Months", nil, placeholder:"Months" %> Months

如上所述;我想计算并传递所需的信息。目前我在*方法上出错:

undefined method `*' for nil:NilClass

任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:2)

可能是大写符号:Year是问题所在。为哈希提供一个新密钥,它将返回nil

如果没有params[:year],您应该使用引用的#to_i|| 0或其他Integer(value)进行转换。

然而,在渲染视图之前,这种操作在控制器方法内更安全,因为params操作很容易。您可以在控制器中设置变量,然后使用它。

<强>控制器

def action
  @months = (params[:years].to_i*12) + params[:months].to_i
end

查看

<%= f.hidden_field :months, :value => @months %>

答案 1 :(得分:0)

1

params [:years]是零,dooooh

你可以用

进行测试
raise params[:Years].inspect

2

不兼容的类型,请尝试:

:value => ((params[:Years].to_i * 12) + params[:Months].to_i)