首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >呈现' posts‘和呈现posts之间的差异(没有引号)

呈现' posts‘和呈现posts之间的差异(没有引号)
EN

Stack Overflow用户
提问于 2014-07-01 15:31:16
回答 2查看 112关注 0票数 2

我正在看一段视频,他的渲染方式如下所示:

代码语言:javascript
复制
<div>
 <%= render posts %> # no quotes to posts
</div>

尽管他甚至用_posts.html.erb创建了一个分部,但他用引号调用了posts。

虽然他已经像它所说的那样提到了一些事情,活动记录模型,然后是类,然后.我不能正确地理解它。有人能用简单的例子来解释清楚吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-01 15:42:43

使用引号,您将显式地呈现该名称的一个部分。没有引号,一些非常有趣的事情正在发生。posts (没有引号)是一个变量,它将是记录的活动模型列表。

现在,对呈现的调用将查看每个模型的类型,然后为模型找到正确的部分(这将是模型camel_cased的名称),然后依次呈现每个模型。

编辑:

如果您有一个名为Post的模型,并且将其中一些记录赋值给一个变量(我假设他使用posts,但我将使用foo来消除歧义),如下所示:

代码语言:javascript
复制
foo = Post.all

然后,通过调用render foo,呈现函数将看到您有一个activerecord记录集合,然后它将检查与这些记录关联的模型(在我们的示例中是Post),并循环遍历所有这些记录,将它们呈现给一个名为_post.html.erb的部分,并为每个将记录赋值给post的记录提供一个局部变量。

代码语言:javascript
复制
<%= render foo %>

相当于:

代码语言:javascript
复制
<% foo.each do |my_post| %>
  <%= render partial: "post", locals: {post: my_post} %>
<% end %>
票数 1
EN

Stack Overflow用户

发布于 2014-07-01 15:42:10

用引号渲染

代码语言:javascript
复制
<%=render 'post'%>

Rails将在当前文件夹中查找以_开头的部分文件

没有引号的渲染

仍然将使用相同的部分,但在本例中,post是一个变量。我认为这是翻译成这样的:

代码语言:javascript
复制
<%= render partial: "post", locals: {any_string: your_variable(in this case is post)} %>

再说一遍我还没查过。

_post.html.erb是部分,它可以如下所示:

代码语言:javascript
复制
      <b><%=any_string%></b>

如果分配给your_variableany_string将包含字符串“我的名字是”

你的部分将用粗体打印“我的名字”。

无论如何,部分代码更复杂,它们用于代码的干燥(不要重复)。

您可以看到更多的示例这里

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24514112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档