Ruby Rails 5呈现部分和传递数据
我很难了解数据传递的一般方式,以及数据提供给部分用户的一般方式 例如: 我有一个控制器将一个实例变量传递给一个模板,该模板呈现一个局部变量: 静态页面\u controller.rb: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-<%
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." %>
产品