我正在看一段视频,他的渲染方式如下所示:
<div>
<%= render posts %> # no quotes to posts
</div>尽管他甚至用_posts.html.erb创建了一个分部,但他用引号调用了posts。
虽然他已经像它所说的那样提到了一些事情,活动记录模型,然后是类,然后.我不能正确地理解它。有人能用简单的例子来解释清楚吗?
发布于 2014-07-01 15:42:43
使用引号,您将显式地呈现该名称的一个部分。没有引号,一些非常有趣的事情正在发生。posts (没有引号)是一个变量,它将是记录的活动模型列表。
现在,对呈现的调用将查看每个模型的类型,然后为模型找到正确的部分(这将是模型camel_cased的名称),然后依次呈现每个模型。
编辑:
如果您有一个名为Post的模型,并且将其中一些记录赋值给一个变量(我假设他使用posts,但我将使用foo来消除歧义),如下所示:
foo = Post.all然后,通过调用render foo,呈现函数将看到您有一个activerecord记录集合,然后它将检查与这些记录关联的模型(在我们的示例中是Post),并循环遍历所有这些记录,将它们呈现给一个名为_post.html.erb的部分,并为每个将记录赋值给post的记录提供一个局部变量。
<%= render foo %>相当于:
<% foo.each do |my_post| %>
<%= render partial: "post", locals: {post: my_post} %>
<% end %>发布于 2014-07-01 15:42:10
用引号渲染
<%=render 'post'%>Rails将在当前文件夹中查找以_开头的部分文件
没有引号的渲染
仍然将使用相同的部分,但在本例中,post是一个变量。我认为这是翻译成这样的:
<%= render partial: "post", locals: {any_string: your_variable(in this case is post)} %>再说一遍我还没查过。
_post.html.erb是部分,它可以如下所示:
<b><%=any_string%></b>如果分配给your_variable的any_string将包含字符串“我的名字是”
你的部分将用粗体打印“我的名字”。
无论如何,部分代码更复杂,它们用于代码的干燥(不要重复)。
您可以看到更多的示例这里。
https://stackoverflow.com/questions/24514112
复制相似问题