Rails 4基于数据库中的变量呈现部分

时间:2016-09-08 19:09:17

标签: ruby-on-rails rendering partials

我有3个不同的部分,并希望它们在视图中显示在不同的地方,具体取决于确切的产品(或数据库中的记录)。在一些产品上,我只想显示3个部分中的2个。我怎么做到这一点? 谢谢。

1 个答案:

答案 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>