渲染集合时,Rails如何知道要渲染哪个部分名称?

时间:2019-02-25 16:27:14

标签: ruby-on-rails ruby

我正在阅读Rails的入门指南,但我陷入了7.1节。我不明白如何仅通过编写

就能在显示视图中呈现它们在指南中创建的_comment部分。
series_predicted = np.squeeze(series_predicted, axis=(1,))
series_predicted.shape

我将代码的其余部分复制粘贴以使您理解上下文:

“首先,我们将对部分评论进行抽取,以显示文章的所有评论。创建文件app / views / comments / _comment.html.erb并将以下内容放入其中:”

  <h2>Comments</h2>
  <%= render @article.comments %>

“然后您可以将app / views / articles / show.html.erb更改为如下所示:”


<p>
  <strong>Commenter:</strong>
  <%= comment.commenter %>
</p>

<p>
  <strong>Comment:</strong>
  <%= comment.body %>
</p>

“这现在将为@ article.comments集合中的每个注释在app / views / comments / _comment.html.erb中一次渲染部分。随着render方法遍历@ article.comments集合,将每个注释分配给一个与局部变量相同名称的局部变量,在这种情况下,注释将在局部变量中提供给我们显示。”

我的问题是,ruby如何知道我们要渲染特定部分以格式化每个注释?标称名称为_comment,但他们甚至没有在文章显示中提及它。谢谢。

1 个答案:

答案 0 :(得分:2)

该关系为has_many :comments,表示类型为Comment的模型,而该模型又表示模板的部分名称为_comment。模板名称和模型名称的“加下划线”版本在此特定情况下很重要。

Ruby on Rails从您的定义中推断出很多东西,并且如果您遵循约定,就会自动为您做很多工作。