【问题标题】:check if Rails partial is empty检查 Rails 部分是否为空
【发布时间】:2016-09-24 20:33:58
【问题描述】:

我有一个负责 HTML/CSS 样式的主页,但其中一些内容来自部分内容。部分接收一些本地或参数,即 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 %>

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

谢谢

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    不幸的是,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。

    【讨论】:

      【解决方案2】:

      尝试将render_to_string生成的值存储在一个变量中:

      <% partial_content = render_to_string(partial: 'my_partial', locals: {...} ).strip %>
      

      然后你可以看看它是否包含任何内容:

      <% if partial_content.present? %>
        <%= partial_content %>
      <% else %>
        <div class="css_for_no_info">
          <%= render something else %>
        </div>
      <% end %>
      

      【讨论】:

      • @RyanBigg 那会好很多。已编辑。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多