Rails 4 根据数据库中的变量渲染部分

Rails 4 render partial based on variable in database

我有 3 个不同的部分,并希望它们根据确切的产品(或数据库中的记录)显示在不同位置的视图中。在一些产品上,我只想显示 3 个部分中的 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>