1
<%= 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

任何建议都会有所帮助。

4

2 回答 2

2

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

如果没有,params[:year]您应该使用引用的: 或什至 else 之一#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 %>
于 2013-01-03T15:12:20.603 回答
0

1

params[:years] 为零,dooooh

你可以用

raise params[:Years].inspect

2

不兼容的类型,请尝试:

:value => ((params[:Years].to_i * 12) + params[:Months].to_i)
于 2013-01-03T14:25:21.817 回答