Ruby on rails Rails MVC:表单集合是否应该知道它应该呈现哪些集合记录?
我被一个概念问题困住了。假设Post、标记和用户的[abstracted]设置如下:Ruby on rails Rails MVC:表单集合是否应该知道它应该呈现哪些集合记录?,ruby-on-rails,forms,selection,helpers,form-helpers,Ruby On Rails,Forms,Selection,Helpers,Form Helpers,我被一个概念问题困住了。假设Post、标记和用户的[abstracted]设置如下: Post belongs_to Tag Tag has_many Posts User has_many Tags, has_many Posts 用户只能使用其关联的标记之一标记帖子 在新的post表单视图中,我现在有以下选择标记的选项: f.collection\u选择:标签id、当前用户标签等 f.collection\u选择:tag\u id、@tags、并在控制器的新
Post belongs_to Tag
Tag has_many Posts
User has_many Tags,
has_many Posts
用户只能使用其关联的标记之一标记帖子
在新的post表单视图中,我现在有以下选择标记的选项:
f.collection\u选择:标签id、当前用户标签等
f.collection\u选择:tag\u id、@tags、
并在控制器的新操作中:
@tags=当前用户。tags
collection_select(:post, :author_id, Author.all, ...)
这显然有利于第一种选择。在这种方法的pro站点上,我不需要在控制器的create操作中重新定义@tags,以防post的save操作失败,并且我想再次呈现新操作
提前感谢您的建议。您的第一个选择没有问题。首先,它更简单(少一行代码)。在控制器中设置一个额外的实例变量并不能真正为您带来任何好处 考虑控制器的一个好方法是,当变量直接基于只有控制器接收到的输入(例如URL中的参数、查询字符串或来自发布表单的数据)时,它应该只执行设置变量之类的操作 本例中的视图并不是决定如何确定当前用户,它仍然来自您的控制器(尽管可能继承自顶级应用程序控制器或类似Desive的东西?),它所做的只是决定应该在下拉视图中选择当前用户的标签
那有用吗?是的,确实有用。我会选择第一种选择。谢谢!