我有3个不同的部分,并希望它们在视图中显示在不同的地方,具体取决于确切的产品(或数据库中的记录)。在一些产品上,我只想显示3个部分中的2个。我怎么做到这一点? 谢谢。
答案 0 :(得分:2)
假设您有一些模板,比如说products/show.html.erb
,您希望使用自定义逻辑渲染部分模板,我建议您将条件逻辑嵌入到该模板中。这是一个例子,我做了很多假设;随意添加更多详细信息,我可以更新。
首先,您假设的主要模板是show
操作:
# products/show.html.erb
<h1>Product <%= @product.name %></h1>
<p><%= @product.description %></p>
<% if @product.is_fungible? %>
<%= render partial: 'products/fungible', locals: { product: @product } %>
<% end %>
<% if @product.is_edible? %>
<%= render partial: 'products/edible', locals: { product: @product } %>
<% else %>
<%= render partial: 'products/inedible', locals: { product: @product } %>
<% end %>
你的部分可能看起来像这样(注意,因为我们已经将product
作为局部变量传入,所以我们不需要在其中使用实例变量@product
:
# products/_fungible.html.erb
<p>This product is definitely fungible, by a factor of <%= product.fungibility %>.</p>