简单示例:
index.html.erb:
<% @posts.each do |post| %>
<%= post.title %>
<% end %>
我可以重构此内容并将内容移至 _post.html.erb 部分:
index.html.erb:
<%= render @posts %>
_post.html.erb:
<%= post.title %>
那么Rails如何在不创建块的情况下传递每个帖子的属性?
我的posts_controller索引操作只定义了@posts = Post.all
。
我认为可能是部分(post)的名称,但看起来像是另一个Rails约定(复数和单数命名)。是吗?
非常感谢分享!
答案 0 :(得分:4)
Rails通过查看集合中的模型名称来确定要使用的partial的名称。呈现集合的完整语法如下:
<%= render partial: "post", collection: @posts %>
但是有一个简写:
<%= render @posts %>
根据文件:
当使用复数集合调用partial时,则 部分的个别实例可以访问该成员 通过以partial命名的变量呈现的集合。在 这种情况下,部分是_post,在_post部分内,你可以 引用post来获取正在呈现的实例。
您可以在rails guides
中找到详细说明