【问题标题】:Rails 4 collection_select is MVC violated?Rails 4 collection_select 是否违反了 MVC?
【发布时间】:2015-05-14 19:13:38
【问题描述】:

我有一个关于 Rails 4 中 collection_select 的小问题。 当我们在collection_select中调用一个表的所有元素 示例:

<%= f.collection_select :category_id, Category.all, :id, :name %>

是否违反了 MVC? 换句话说:如果我在产品视图中有一个 collection_select 在这个视图中它调用Category.all,对我来说,我们违反了 MVC 模式。因为Category.all 应该在模型中。

告诉我我是否正确。

【问题讨论】:

  • 取决于你对 MVC 的定义,以及你对视图隔离的关心程度。确实,拥有动作实例变量更多违反,理想情况下,IMO-a 视图只能访问特定于视图的模型。几乎总是有取舍。
  • 嗯,在什么情况下我可以谈违规?
  • 如果它对你很重要,当然可以——但我不确定这是否重要。 “纯”MVC 框架很少见,但随着 Web 套接字和类似物的普及,它们变得越来越可行。

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 collection-select


【解决方案1】:

将集合作为选项列表传递给collection_select 并不违反MVC 模式,这就是collection_select 是如何植入数据的。

【讨论】:

  • 也许我应该使用一种方法来获取所有类别..或者不?
  • @Vito 关于方法的一点是,只有在加载类时才会评估它,这意味着它可能不够准确。
  • 对不起安德烈,但我仍然不明白为什么,当我在视图中调用 Category.all 时,这不是违规。这些事情应该在 Category 的 Model 中完成,并通过 helper 或 simpli 方法在视图中调用。谢谢你帮助我:)
  • @Vito 不在Category 中,而是在视图中的模型。
猜你喜欢
  • 2010-10-05
  • 1970-01-01
  • 1970-01-01
  • 2011-01-02
  • 1970-01-01
  • 2016-07-31
  • 2016-11-22
  • 2021-06-19
  • 2017-03-17
相关资源
最近更新 更多