【发布时间】:2010-12-23 18:05:18
【问题描述】:
我有一个有趣的问题,涉及我的 Rails 3 音乐应用程序中的对象创建步骤。
我有两个模型(不是实际模型;但为了简单起见): 播放列表 歌曲
播放列表 has_many Songs;歌曲属于播放列表。
每个播放列表对象必须有确切数量的歌曲。每首歌曲必须属于一个播放列表。
鉴于此,我想创建一个创建播放列表的过程,该过程还涉及同时创建所有必要的歌曲。
另一件事是,要获取 Song 数据,用户输入一个查询(我不会将其保存在 Song 模型中),然后我使用它从 API 收集数据。这是应该用于制作 Song 对象的数据。因此,我不能(不认为?)使用传统的 form_for。
相反,我使用的是远程 form_tag。此表单请求查询,然后使用 Ajax 请求来获取数据,这些数据被放入临时 Song 对象中,然后使用 Song 视图内联显示在 Playlist 创建页面上。此表单可用于播放列表的所有必要 Song 对象。
因此,我们的想法是,当用户输入了所需数量的查询(即将所需数量的歌曲添加到播放列表)时,他们会看到一个新按钮,使他们能够提交播放列表信息并继续过程。然后将使用通过 Ajax 创建的所有 Song 对象作为子对象创建播放列表。
实际上,我想不出一种优雅的工作方式。虽然我通过 Ajax 创建了 Song 对象,但它们并没有保存在任何地方,并且它们不知道应该将它们添加到哪个播放列表中(因为数据库中也不存在播放列表对象。)因此,当我进入下一步时,我没有所有的歌曲数据。我研究过使用带有accepts_nested_attributes_for 的嵌套表单,但我想不出一种在我的设置中使用它的方法(使用Ajax 的非基于模型的表单。)
所以,我被困住了。如果有人可以提供帮助,将不胜感激。
【问题讨论】:
标签: ruby-on-rails ajax ruby-on-rails-3 nested-forms