原谅问题的标题;花了20分钟试图写出一些连贯的东西(如果成功就会产生怀疑)。
无论如何,以博客为例,我们的模型如下所示:
发表了很多评论 评论belongsTo Post
假设我要添加一条新注释:保存注释时,我需要在调用save之前将外键包含在数据数组中的父Post(Post.id)中。
因为我想将关系保持在用户的上下文中 - 我 不希望他们必须从选择字段中选择一个帖子来关联评论 - 这是我看到的两个选项:
1)将评论表格放在帖子的视图中。
2)将Post Id作为参数(通过GET)传递给Comment.add操作(或写入/读取/来自Session);保存和 重定向回到父Post.view。
选项1非常适合博客,但不适用于用户的个人资料 表格太长,不能整齐地包含在用户视图中。
选项2的工作原理我想,但是我必须写一些特定于Post的显示/重定向条件 Comments.add动作,似乎不对;从我读过的,我 应该试图在控制器之间保持1:1的关系 和模特。
作为Web MVC最佳实践,#2是否可以接受?或者我还有另一种选择吗?
答案 0 :(得分:1)
我经常一起做两件事。我把表单放在视图的帖子中(可能使用了一个元素,如果你想把它放在其他地方),但让它提交给它的控制器的添加动作(在这种情况下是注释)并传递帖子的ID。只需注意 - 如果您需要实现私人帖子等,最好在评论控制器的添加操作中进行检查。
答案 1 :(得分:0)
这两个选项对我来说都很好。