1
我需要从哈希表中生成一个表单并将其返回到其发布的参数中。为此,我创建了这个类。在Rails 3中生成哈希表格
class Hashit
include ActiveModel::Conversion
extend ActiveModel::Naming
def initialize(hash)
hash.each do |k, v|
self.class.send(:attr_accessor, k.to_sym)
if v.class.name == "ActiveSupport::HashWithIndifferentAccess"
self.send("#{k}=", Hashit.new(v))
else
self.send("#{k}=", v)
end
end
end
def persisted?
true
end
end
现在例如我有一个settings
散列。 {:live=>{:title=>"Live Title"}, :staging=>{:title=>'Staging Title'}}
将其转换为@settings_obj = Hashit.new(settings)
的对象,然后使用simple_form为其生成表单。
<%= simple_form_for @settings_obj, :url => app_settings_url do |f| %>
<%= f.fields_for :live do |l| %>
<%= l.input :title %>
<% end %>
<%= f.fields_for :staging do |s| %>
<%= s.input :title %>
<% end %>
<%= f.submit %>
<% end %>
使用适当的字段名称正确生成表格,但只有问题是字段中没有值。
如何解决这个问题?