我使用序列化屬性呈現表單。屬性序列化在正常使用情況下工作正常,但現在我試圖序列化一個散列。查看代碼看起來像下面的序列化屬性沒有用表單助手正確評估
<%= @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}
這也許可以在評論回答另一個問題的屬性:如何不好做這個代碼味道?我不確定Rails社區如何感覺像這樣的元編程。它傷害了我一點去做,但似乎工作的大部分時間
那麼第一行如何評估?此外,如果我將邏輯移入控制器並將html呈現給我放入視圖('<%= raw html%>')的變量('html = [LOOP]'),那麼安全風險是否會減輕?或者有人仍然可以將代碼注入控制器? –