【问题标题】:How Rails render finds variableRails 渲染如何找到变量
【发布时间】:2017-01-16 13:17:12
【问题描述】:

简单示例:

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

我认为这可能是部分(帖子)的名称,但看起来像是另一个 Rails 约定(复数和单数命名)。是吗?

非常感谢分享!

【问题讨论】:

    标签: ruby-on-rails refactoring ruby-on-rails-5 renderpartial


    【解决方案1】:

    Rails 通过查看集合中的模型名称来确定要使用的部分名称。呈现集合的完整语法如下:

    <%= render partial: "post", collection: @posts %>
    

    但是有一个简写:

    <%= render @posts %>
    

    根据文档:

    当使用复数集合调用部分时,则 部分的个别实例可以访问 集合通过以部分命名的变量呈现。在 在这种情况下,部分是 _post,在 _post 部分中,您可以 请参阅帖子以获取正在呈现的实例。

    你可以在rails guides找到详细解释

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-13
      • 1970-01-01
      相关资源
      最近更新 更多