Ruby on rails Rails动态表单-向表单添加可序列化字段

Ruby on rails Rails动态表单-向表单添加可序列化字段,ruby-on-rails,ruby-on-rails-3,serialization,Ruby On Rails,Ruby On Rails 3,Serialization,我有一个用户和设置设置有一个名为:custom_links的:serializable字段: 在Setting.rb中 serialize :custom_links, Hash has_one :setting, dependent: :destroy 在User.rb中 serialize :custom_links, Hash has_one :setting, dependent: :destroy 我想创建一个表单,允许用户设置任意数量的自定义链接,并将它们存储在:cu

我有一个
用户
设置
<代码>设置有一个名为
:custom_links
:serializable
字段:

Setting.rb中

  serialize :custom_links, Hash
has_one :setting, dependent: :destroy
User.rb中

  serialize :custom_links, Hash
has_one :setting, dependent: :destroy
我想创建一个表单,允许用户设置任意数量的自定义链接,并将它们存储在
:custom_links
散列中。每个自定义链接在散列中都有一个名称和一个URL

我不知道如何在视图中构造此表单,并允许用户使用javascript动态添加任意数量的自定义链接(并将这些链接保存在:custom_links散列中)。我在
:setting
中有其他字段,我的控制器可以很好地处理这些字段-我想我唯一需要帮助的是视图和javascript

澄清更新:

当用户填写表单以输入
:custom_links
时,我希望它采用以下格式:

{
:name => "Google", :url => "http://www.google.com",
:name => "Twitter", :url => "http://www.twitter.com"
}
另外,我希望能够为用户想要输入的每个
:custom_link
动态添加2个文本字段

非常感谢您的帮助


谢谢

我建议将这些链接作为单独的模型添加(例如,
有很多:自定义链接
)。另外,您还可以使用AR的验证,而不是为序列化属性创建自己的自定义验证方法

可以对这些字段使用。请看以下railscasts剧集:


第二个还向您展示了如何使用javascript动态添加更多字段。

我建议将这些链接作为一个单独的模型添加(例如,
有很多:自定义链接
)。另外,您还可以使用AR的验证,而不是为序列化属性创建自己的自定义验证方法

可以对这些字段使用。请看以下railscasts剧集:


第二个还向您展示了如何使用javascript动态添加更多字段。

使用序列化属性是一项硬要求吗?您可以添加一个
has\u many:custom\u链接
关联,并使用嵌套属性将它们嵌套在主设置窗体下。序列化它们与Rails提供的内容背道而驰,从长远来看通常会导致更多的痛苦。另外,我认为您希望有一个序列化数组,而不是散列(对吗?)。你在更新中添加的哈希没有任何意义,因为它有重复的键。我想我可以,但我只是不想在模型上做得太多。不确定在这种情况下什么是正确的,但我认为序列化对象会更好。此外,格式(散列或数组)对我来说也并不重要。序列化它们没什么错,但因为它是一个集合(不是散列),所以使用Rails提供的东西是有意义的。请参阅下面我的答案。使用序列化属性是一项硬要求吗?您可以添加一个
has\u many:custom\u链接
关联,并使用嵌套属性将它们嵌套在主设置窗体下。序列化它们与Rails提供的内容背道而驰,从长远来看通常会导致更多的痛苦。另外,我认为您希望有一个序列化数组,而不是散列(对吗?)。你在更新中添加的哈希没有任何意义,因为它有重复的键。我想我可以,但我只是不想在模型上做得太多。不确定在这种情况下什么是正确的,但我认为序列化对象会更好。此外,格式(散列或数组)对我来说也并不重要。序列化它们没什么错,但因为它是一个集合(不是散列),所以使用Rails提供的东西是有意义的。请看下面我的答案。看起来是最好的选择。谢谢。使用Railscasts 197成功实施。再次感谢,是的。看起来是最好的选择。谢谢。使用Railscasts 197成功实施。再次感谢。