迈克尔哈特尔的书Rails 3.0和Rails 3.2之间的差异

时间:2012-02-02 12:38:16

标签: ruby-on-rails railstutorial.org

我正在从Michael Hartl的书中学习Ruby on Rails。我非常喜欢这种写作,结构清晰。不过,我对Rails 3.0和Rails 3.2版本之间的第3.3章差异有疑问:

  • PagesController成为StaticPagesController
  • @Title不再在控制器中初始化,而是在每个页面中
  • @Title变量通过“提供”功能初始化,并通过“yield”函数使用,而不是简单地插入<%= @title %>

是出于培训原因,还是RoR开发的最新最佳实践?

1 个答案:

答案 0 :(得分:16)

  

PagesController成为StaticPagesController

没有理由。 PagesController很好。他这样做可能是为了清晰起见(?)。

  

@Title不再在控制器中初始化,而是在每个页面中

这是出于最佳做法/惯例的原因。请查看此问题Where does the meta content live in the MVC?

的答案
  

@Title变量通过“提供”功能初始化,并通过“yield”函数使用,而不是简单地插入&lt;%= @title%&gt;

与上述答案相同。

有些人认为标题等元内容属于视图,因此应该在视图中设置,而不是在控制器中设置。

providecontent_for之间的实际差异在这里得到了很好的解释:http://api.rubyonrails.org/classes/ActionController/Streaming.html#module-ActionController::Streaming-label-Communication+between+layout+and+template

请注意,这些更改并非特定于Rails 3.2(Rails 3.1中provide引入的stream除外)。