检查Rails partial是否为空

时间:2013-02-10 19:46:00

标签: ruby-on-rails

我有一个负责HTML / CSS样式的主页面,但有些内容来自partials。部分接收一些本地或参数,即current_user或person,并显示信息(如果有的话)。

我有办法检查部分渲染是否有任何东西?我的最终目标是这样的:

<% if my_partial can render something %>
 <div class="css_for_something">
  <%= render(partial: 'my_partial', locals: {...} ) %>
<% else %>
  <div class="css_for_no_info">
   <%= render something else %>
<% end %>

我不希望局部处理样式逻辑;他们只需要显示内容(如果有的话)。相反,主页面不应该知道部分逻辑,例如检查值或查询数据库。

谢谢

1 个答案:

答案 0 :(得分:2)

不幸的是,Chris Peter的解决方案在rails 4.2.4上不起作用,因为render_to_string似乎在视图中不可用。

然而,以下工作(rails 4.2.4):

<% partial_content = render partial: 'my_partial' %>
<% if partial_content.present? %>
  <%= partial_content %>
<% else %>
  <%# rendered if partial is empty %>
<% end %>

请注意present?检查确实只检查呈现的内容是否为空。如果,某事,例如返回HTML注释,检查返回false。