【发布时间】:2013-01-09 20:24:28
【问题描述】:
我正在渲染一个带有序列化属性的表单。属性序列化在正常使用下工作正常,但现在我正在尝试序列化哈希。视图代码如下所示
<%= @item.seasonality_of_sales_pct.each do |key, value| %>
<%= eval("f.label :'seasonality_of_sales_pct[:#{key}]'") %>
<%= eval("f.text_field :'seasonality_of_sales_pct[:#{key}]'") %>
<% end %>
我得到的错误是undefined method 'seasonality_of_sales_pct[:January]' for #<Item:0x007f01083edd38>。但是,引发错误的行是第二个eval。第一个 eval 评估得很好。我很困惑为什么会发生这种情况。
在控制器中,我设置了如下属性
@item.seasonality_of_sales_pct = {January: nil, February: nil, March: nil, September: nil}
在 cmets 中可能会回答的另一个问题是:这段代码有多难闻?我不确定 Rails 社区对这样的元编程有何看法。这样做有点伤害我,但似乎大部分时间都有效
【问题讨论】:
标签: ruby-on-rails metaprogramming form-helpers