创建多个资源的页面应该位于何处?

时间:2012-05-16 19:48:35

标签: ruby-on-rails ruby-on-rails-3 model controller nested-resources

我有一个演示模型,我通过表单以通常的方式创建。

Presentation Model有两个嵌套资源:Recording Model和SlideDeck Model:

class Presentation < ActiveRecord::Base

has_one :recording
has_one :slide_deck

end

我有一个Flash组件,允许用户录制演示文稿并在其持续时间内添加幻灯片。用户完成演示文稿的创建和编辑后,单击“保存”。

此时我需要在Presentation上创建Recording和SlideDeck作为嵌套资源。这意味着从单个表单创建两个模型。

我的问题是这个页面应该放在哪里?如果组件仅创建了录制,则页面将从recording_controller上的新操作呈现,如果它只是创建SlideDeck,则页面将从新的slide_deck_controller呈现。但是在这种情况下,我同时创建了两个。

那么组件应该在哪里生活?是否应该通过presentation_controller上的操作呈现;另一个编辑动作?在某种意义上,此页面允许通过创建其嵌套资源来编辑演示文稿。

2 个答案:

答案 0 :(得分:1)

通常,PresentationController#edit(和相应的#update)用于修改'Presentation'模型。如果您已经拥有#edit和相应的#update,并且希望在单独的操作中创建录制,则需要创建另一对操作。另一个选择是你可以使#update足够通用以处理“正常编辑”和“创建录音”。在这种情况下,#edit和#record操作都可以将表单提交给#update操作。

答案 1 :(得分:0)

我认为它应该是Presentation模型中nested_attributes的一部分,而不是通过创建或更新操作将所有信息添加到演示文稿