【发布时间】:2011-03-08 11:34:33
【问题描述】:
我有一个将序列化哈希作为字段的模型。我正在尝试创建一个允许用户填写的表单。 有没有办法使用 Rails form_for helper 来简洁地构建哈希?
模型是一篇文章,一篇文章可以有多个作者,这些作者存储在一个序列化的哈希中。
class Article
serialize :authors, Hash
end
作者哈希存储有关为文章做出贡献的每个作者的信息,并且可以具有许多可选属性。作者以他们应该出现的顺序为关键字。以下是此类哈希的示例:
{1 => {:name => "William Jones", :contribution => "写了这个问题的正文"}, 2 => {:name => "Billy Bob", :contribution => "给威廉买咖啡", :level => "次要"}
我有一个有点适用于此的表单,我使用 form_for Rails 助手,但我不得不使用 text_field_tag 和其他非模型特定助手来生成作者哈希。例如,其中 key_num 是传递给部分的变量:
<%= text_field_tag "article[authors][#{key_num}][name]",
article[authors][#{key_num}] ? article[authors][#{key_num}][:name] : nil %>
显然,这非常丑陋且不清楚。有没有更好的方法来做到这一点我错过了?
我正在对文章进行版本控制,除其他原因外,使用序列化哈希而不是将作者概念转变成单独的子模型非常有帮助。
【问题讨论】:
标签: ruby-on-rails forms hash