5

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

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

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

4

1 回答 1

16

PagesController 变成了 StaticPagesController

没有理由。PagesController 很好。他这样做可能是出于清楚的原因(?)。

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

这是出于最佳实践/惯例的原因。请看一下这个问题的答案,元内容在 MVC 中的位置?

@Title 变量通过“provide”函数初始化,并通过“yield”函数使用,而不是简单地插入 <%= @title %>

和上面的回答一样。

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

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

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

于 2012-02-02T12:58:26.997 回答