Rails - 查看文件 - 如何避免每个控制器操作一个 html 文件和一个 js 文件?

Posted

技术标签:

【中文标题】Rails - 查看文件 - 如何避免每个控制器操作一个 html 文件和一个 js 文件?【英文标题】:Rails - View files - How to avoid one html file and one js file per controller action? 【发布时间】:2012-06-27 04:25:33 【问题描述】:

对 Rails 很陌生并且目前正在构建一个项目,我开始处于我的视图文件夹增长过多的情况

我有例如: /应用程序/ ../views/ ..../cmets/ ....../_comment.html.erb ....../_cmets_count.html.erb ....../_form.html.erb ....../create.js.erb ....../destroy.js.erb ....../edit.html.erb ....../edit.js.erb ....../index.html.erb ....../index.js.erb ....../new.html.erb ....../show.html.erb ....../update.js.erb

我绝对希望有 2 个文件: cmets.html.erb cmets.js.erb

在每个内部(如在控制器中)每个动作都有一个部分。

目前编辑每个文件似乎太麻烦了,即使它们很瘦。

您如何管理您的视图文件?我的 cmets 视图文件夹对于 rails 项目是否“正常”?是否有一些像把手这样的模板引擎可以帮助解决这个问题?

【问题讨论】:

【参考方案1】:

这是个坏主意。 Rails 将操作拆分为不同的视图,因此一切都是模块化的并且更易于维护。没有办法简单地将所有内容组合成一个单一的文件并在每个操作的基础上调用您想要的部分;这就是你的控制器的重点。

如果您在编辑不同的文件时遇到困难,我不会说这是 Rails 行为的问题,而是您的开发环境的问题。许多 IDE 和编辑器具有帮助处理许多文件的过程的功能或插件。但是,您的情况对于 CRUD 视图来说是相当标准的。

【讨论】:

同意。我要补充一点,当您进行功能开发时,可能拥有这么多文件会很痛苦,但是有一天当您尝试调试某些东西时,您可以只专注于一小部分您的应用程序已损坏,您会喜欢这种分离。 在 IDE 方面,我建议使用 RubyMine,jetbrains.com/ruby。我见过的最好的工具。 感谢您的回复,我选择您的作为接受,因为它是模块化且易于维护的部分,我认为这可以正确解释为什么 Rails 是以这种方式构建的【参考方案2】:

在 Rails 3.1 及更高版本中,JS 文件位于 assets/javascripts 文件夹中以用于资产管道……如果我在两行之间阅读,您可能会更喜欢。但除此之外,这看起来很正常。

在一个文件中包含太多内容违反了单一职责原则。每个文件应该只有一个更改理由。

【讨论】:

甚至具体的控制器js?我把它们放在那里,以便当我的控制器调用更新操作时,执行特定的更新 javascipt。 assets/javascript 中的 js 文件是否有可能出现这种行为? 是的。如果您将它们命名为控制器 cmets.js...它们可以自动包含在该控制器中发生的所有事情中。 但是如果我希望 update.js.erb 文件仅在控制器的更新操作执行后才执行?不是针对每个控制器操作? 使用 添加 JS 的特定调用 .js.erb 文件与资产文件不同——它们是 Rails 在渲染动作后专门调用的。【参考方案3】:

我同意@rpedroso。 Rails 设置这些东西是有原因的。您可以选择不同意原因并采取不同的做法;大概您对系统和所涉及的权衡有很深的了解。但是在不知道原因的情况下做不同的事情只是粗心。 Rails 如此受欢迎是因为它制定了易于遵循的约定,强烈推荐,因为每个人都知道它们是什么,并且可以和你说同一种语言。无视惯例后果自负。

我推荐 Michael Hartl 的 Rails Tutorial 作为 Rails 的精彩介绍。

【讨论】:

感谢您的回复,如果我问这个问题,当然是了解rails约定并遵循它们

以上是关于Rails - 查看文件 - 如何避免每个控制器操作一个 html 文件和一个 js 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何避免 Rails 脚手架将模型放入命名空间

如何限制 Rails 路由文件中的资源格式

如何避免将魔术编码注释放在 Ruby 1.9 中每个 UTF-8 文件的顶部?

带有文件上传的 Rails 3 多步骤表单

如何在 Rails 控制台中运行 ActiveJob 进行调试?

如何在我的 Rails 控制台中查看 Rails 审计记录?