Ruby Rails 5呈现部分和传递数据

Ruby Rails 5呈现部分和传递数据,ruby,templates,ruby-on-rails-5,partial,Ruby,Templates,Ruby On Rails 5,Partial,我很难了解数据传递的一般方式,以及数据提供给部分用户的一般方式 例如: 我有一个控制器将一个实例变量传递给一个模板,该模板呈现一个局部变量: 静态页面\u controller.rb: def home @feed_items = current_user.feed end home.html.erb: <%= render 'shared/feed' %> <%= render @feed_items %> <li id="micropost-<%

我很难了解数据传递的一般方式,以及数据提供给部分用户的一般方式

例如:

我有一个控制器将一个实例变量传递给一个模板,该模板呈现一个局部变量:

静态页面\u controller.rb:

def home
  @feed_items = current_user.feed
end
home.html.erb:

<%= render 'shared/feed' %>
<%= render @feed_items %>
<li id="micropost-<%= micropost.id %>">
  <%= link_to adorable_avatar_for(micropost.user, size: 50), micropost.user %>
</li>
<h1>Products</h1>
<%= render partial: "product", collection: @products %>
<p>Product Name: <%= product.name %></p>
<h1>Contacts</h1>
<%= render [customer1, employee1, customer2, employee2] %>
<p>Customer: <%= customer.name %></p>
<p>Employee: <%= employee.name %></p>
因此,不知何故,因为
microspost.where(…)
返回一个microspost集合,Rails知道如何从
\u feed.html.erb
转到另一个部分,在该部分中定义了
  • ,以定义microspost的定义方式

    _micropost.html.erb:

    <%= render 'shared/feed' %>
    
    <%= render @feed_items %>
    
    <li id="micropost-<%= micropost.id %>">
      <%= link_to adorable_avatar_for(micropost.user, size: 50), micropost.user %>
    </li>
    
    <h1>Products</h1>
    <%= render partial: "product", collection: @products %>
    
    <p>Product Name: <%= product.name %></p>
    
    <h1>Contacts</h1>
    <%= render [customer1, employee1, customer2, employee2] %>
    
    <p>Customer: <%= customer.name %></p>
    
    <p>Employee: <%= employee.name %></p>
    

  • 而且这仅仅是一种惯例,因为我确实在处理一组
    micropost
    ,Rails知道如何给
    micropost
    变量?

    您的问题在。值得一读的是,下面引用的段落前面也有关于偏音的信息:

    每个分部也有一个局部变量,其名称与 部分(减去下划线)。您可以将一个对象传递到此 通过:对象选项的局部变量:

    <%= render partial: "customer", object: @new_customer %>
    
    假设@customer实例变量包含 客户模型,这将使用_Customer.html.erb来呈现它,并且 将本地变量customer传递到将 请参阅父视图中的@customer实例变量

    3.4.5呈现集合

    分部在呈现集合时非常有用。当你经过一个 通过:collection选项将集合设置为分部,分部将 为集合中的每个成员插入一次:

    index.html.erb:

    <%= render 'shared/feed' %>
    
    <%= render @feed_items %>
    
    <li id="micropost-<%= micropost.id %>">
      <%= link_to adorable_avatar_for(micropost.user, size: 50), micropost.user %>
    </li>
    
    <h1>Products</h1>
    <%= render partial: "product", collection: @products %>
    
    <p>Product Name: <%= product.name %></p>
    
    <h1>Contacts</h1>
    <%= render [customer1, employee1, customer2, employee2] %>
    
    <p>Customer: <%= customer.name %></p>
    
    <p>Employee: <%= employee.name %></p>
    
    产品
    
    _product.html.erb:

    <%= render 'shared/feed' %>
    
    <%= render @feed_items %>
    
    <li id="micropost-<%= micropost.id %>">
      <%= link_to adorable_avatar_for(micropost.user, size: 50), micropost.user %>
    </li>
    
    <h1>Products</h1>
    <%= render partial: "product", collection: @products %>
    
    <p>Product Name: <%= product.name %></p>
    
    <h1>Contacts</h1>
    <%= render [customer1, employee1, customer2, employee2] %>
    
    <p>Customer: <%= customer.name %></p>
    
    <p>Employee: <%= employee.name %></p>
    
    产品名称:

    当使用复数集合调用分部时,则 分部的单个实例可以访问 通过以分部名称命名的变量呈现的集合。在里面 这种情况下,部分是_积,在_积部分中, 您可以引用产品来获取正在呈现的实例

    这也有一个速记。假设@products是一个集合 对于产品实例,只需将其写入index.html.erb即可 要产生相同的结果:

    <h1>Products</h1>
    <%= render @products %>
    
    产品
    
    Rails通过查看 集合中的模型名称。事实上,你甚至可以创建一个 异类集合并以这种方式呈现,Rails将选择 集合中每个成员的适当部分:

    index.html.erb:

    <%= render 'shared/feed' %>
    
    <%= render @feed_items %>
    
    <li id="micropost-<%= micropost.id %>">
      <%= link_to adorable_avatar_for(micropost.user, size: 50), micropost.user %>
    </li>
    
    <h1>Products</h1>
    <%= render partial: "product", collection: @products %>
    
    <p>Product Name: <%= product.name %></p>
    
    <h1>Contacts</h1>
    <%= render [customer1, employee1, customer2, employee2] %>
    
    <p>Customer: <%= customer.name %></p>
    
    <p>Employee: <%= employee.name %></p>
    
    联系人
    
    customers/_customer.html.erb:

    <%= render 'shared/feed' %>
    
    <%= render @feed_items %>
    
    <li id="micropost-<%= micropost.id %>">
      <%= link_to adorable_avatar_for(micropost.user, size: 50), micropost.user %>
    </li>
    
    <h1>Products</h1>
    <%= render partial: "product", collection: @products %>
    
    <p>Product Name: <%= product.name %></p>
    
    <h1>Contacts</h1>
    <%= render [customer1, employee1, customer2, employee2] %>
    
    <p>Customer: <%= customer.name %></p>
    
    <p>Employee: <%= employee.name %></p>
    
    客户:

    employees/_employee.html.erb:

    <%= render 'shared/feed' %>
    
    <%= render @feed_items %>
    
    <li id="micropost-<%= micropost.id %>">
      <%= link_to adorable_avatar_for(micropost.user, size: 50), micropost.user %>
    </li>
    
    <h1>Products</h1>
    <%= render partial: "product", collection: @products %>
    
    <p>Product Name: <%= product.name %></p>
    
    <h1>Contacts</h1>
    <%= render [customer1, employee1, customer2, employee2] %>
    
    <p>Customer: <%= customer.name %></p>
    
    <p>Employee: <%= employee.name %></p>
    
    员工:

    在这种情况下,Rails将使用customer或employee部分作为 适用于集合中的每个成员

    如果集合为空,render将返回nil,因此 提供替代内容应该相当简单

    <h1>Products</h1>
    <%= render(@products) || "There are no products available." %>
    
    产品
    

    你的问题在报告中得到了回答。值得一读的是,下面引用的段落前面也有关于偏音的信息:

    每个分部也有一个局部变量,其名称与 部分(减去下划线)。您可以将一个对象传递到此 通过:对象选项的局部变量:

    <%= render partial: "customer", object: @new_customer %>
    
    假设@customer实例变量包含 客户模型,这将使用_Customer.html.erb来呈现它,并且 将本地变量customer传递到将 请参阅父视图中的@customer实例变量

    3.4.5呈现集合

    分部在呈现集合时非常有用。当你经过一个 通过:collection选项将集合设置为分部,分部将 为集合中的每个成员插入一次:

    index.html.erb:

    <%= render 'shared/feed' %>
    
    <%= render @feed_items %>
    
    <li id="micropost-<%= micropost.id %>">
      <%= link_to adorable_avatar_for(micropost.user, size: 50), micropost.user %>
    </li>
    
    <h1>Products</h1>
    <%= render partial: "product", collection: @products %>
    
    <p>Product Name: <%= product.name %></p>
    
    <h1>Contacts</h1>
    <%= render [customer1, employee1, customer2, employee2] %>
    
    <p>Customer: <%= customer.name %></p>
    
    <p>Employee: <%= employee.name %></p>
    
    产品
    
    _product.html.erb:

    <%= render 'shared/feed' %>
    
    <%= render @feed_items %>
    
    <li id="micropost-<%= micropost.id %>">
      <%= link_to adorable_avatar_for(micropost.user, size: 50), micropost.user %>
    </li>
    
    <h1>Products</h1>
    <%= render partial: "product", collection: @products %>
    
    <p>Product Name: <%= product.name %></p>
    
    <h1>Contacts</h1>
    <%= render [customer1, employee1, customer2, employee2] %>
    
    <p>Customer: <%= customer.name %></p>
    
    <p>Employee: <%= employee.name %></p>
    
    产品名称:

    当使用复数集合调用分部时,则 分部的单个实例可以访问 通过以分部名称命名的变量呈现的集合。在里面 这种情况下,部分是_积,在_积部分中, 您可以参考product以获取正在呈现的实例

    这也有一个速记。假设@products是一个集合 对于产品实例,只需将其写入index.html.erb即可 要产生相同的结果:

    <h1>Products</h1>
    <%= render @products %>
    
    产品
    
    Rails通过查看 集合中的模型名称。事实上,你甚至可以创建一个 异类集合并以这种方式呈现,Rails将选择 集合中每个成员的适当部分:

    index.html.erb:

    <%= render 'shared/feed' %>
    
    <%= render @feed_items %>
    
    <li id="micropost-<%= micropost.id %>">
      <%= link_to adorable_avatar_for(micropost.user, size: 50), micropost.user %>
    </li>
    
    <h1>Products</h1>
    <%= render partial: "product", collection: @products %>
    
    <p>Product Name: <%= product.name %></p>
    
    <h1>Contacts</h1>
    <%= render [customer1, employee1, customer2, employee2] %>
    
    <p>Customer: <%= customer.name %></p>
    
    <p>Employee: <%= employee.name %></p>
    
    联系人
    
    customers/_customer.html.erb:

    <%= render 'shared/feed' %>
    
    <%= render @feed_items %>
    
    <li id="micropost-<%= micropost.id %>">
      <%= link_to adorable_avatar_for(micropost.user, size: 50), micropost.user %>
    </li>
    
    <h1>Products</h1>
    <%= render partial: "product", collection: @products %>
    
    <p>Product Name: <%= product.name %></p>
    
    <h1>Contacts</h1>
    <%= render [customer1, employee1, customer2, employee2] %>
    
    <p>Customer: <%= customer.name %></p>
    
    <p>Employee: <%= employee.name %></p>
    
    客户:

    employees/_employee.html.erb:

    <%= render 'shared/feed' %>
    
    <%= render @feed_items %>
    
    <li id="micropost-<%= micropost.id %>">
      <%= link_to adorable_avatar_for(micropost.user, size: 50), micropost.user %>
    </li>
    
    <h1>Products</h1>
    <%= render partial: "product", collection: @products %>
    
    <p>Product Name: <%= product.name %></p>
    
    <h1>Contacts</h1>
    <%= render [customer1, employee1, customer2, employee2] %>
    
    <p>Customer: <%= customer.name %></p>
    
    <p>Employee: <%= employee.name %></p>
    
    员工:

    在这种情况下,Rails将使用customer或employee部分作为 适用于集合中的每个成员

    如果集合为空,render将返回nil,因此 提供替代内容应该相当简单

    <h1>Products</h1>
    <%= render(@products) || "There are no products available." %>
    
    产品