【发布时间】:2011-03-04 14:49:39
【问题描述】:
我有一个模型专辑,它有一个名为 Track 的“has_many :trough”关联。基本上,一张专辑可以有许多曲目,但一首曲目可以同时属于多个专辑(因此通过关联“Tracklist”)。
我有一个带有表单的 RESTful 应用程序(在 formtastic 的帮助下),它可以像这样输出所有轨道的属性
form.semantic_fields_for :tracks do | builder |
builder.fields
end
表单列出了所有相关的曲目字段,我可以很好地更新它们,一切正常。
现在,我想做的是另一种观点,将新曲目添加到现有专辑中。在此视图中,我不想呈现现有轨道的所有输入字段,而只想呈现我正在尝试创建的单个新关联的字段。
我试图找到有关如何执行此操作的信息,我想出的最好的方法是:
form.semantic_fields_for :tracks, Track.new do | builder |
builder.fields
end
这会根据需要输出一组跟踪输入,我可以提交表单,然后创建跟踪并将其关联到产品 - 但前提是没有验证错误。
问题在于验证。如果失败,应用程序会再次呈现相同的视图,但所有输入再次为空(所有数据,无论是否有效,都将丢失,并且 Formtastic 的内联错误消息也消失了):
form.semantic_fields_for :tracks, Track.new do | builder |
builder.fields
end
我认为这是因为我执行了 Track.new,即使请求参数中已经有一个包含数据和错误消息的对象。这当然不好。我想要的是与已经输入的数据一起显示的单个轨道的表单,以及 Formtastic 错误消息。
我做错了什么?
【问题讨论】:
标签: ruby-on-rails nested-forms has-many-through formtastic