【问题标题】:What's the cleanest way to add a class attribute to an html element in a view in rails在rails的视图中将类属性添加到html元素的最干净的方法是什么
【发布时间】:2010-11-06 12:52:02
【问题描述】:

我正在为部分视图编写一些 Rails 代码,并且我希望它仅在有人已经登录到此处的站点时才显示评论字段。

如果页面被尚未成为站点成员的人查看,则应传入 shared/comment_not_logged_in 片段。

但是,我完全不知道为什么我不能运行相同的检查来决定页面是否应该在此处将类属性“missing_your_voice”添加到封闭的 div 元素:

   <li class="user_submission_form bubble comment_form <% "missing_your_voice" if not current_user %>">

      <% if current_user %>      
        <%= image_tag(current_user.avatar(:comment), :class => "profile_pic") %>
        <% form_for [parent, Comment.new] do |f| %>
        <%= render "comments/form", :f => f %>
        <% end %>
      <% else %>
        <%= render :partial => 'shared/comment_not_logged_in' %>
      <% end %>

  </li>  

同样的用法,"missing_your_voice" if not current_user 在 irb 中返回字符串,在控制台调试器中也是如此。

我在这里做错了什么?

【问题讨论】:

  • (拍自己的额头)天啊!太明显了!

标签: ruby-on-rails ruby views idioms


【解决方案1】:

您忘记了=。将&lt;%替换为&lt;%=,得到:

<%= "missing_your_voice" if not current_user %>

请记住,&lt;% ... %&gt; 只会运行 Ruby 代码,但不会显示任何内容。使用&lt;%= ... %&gt; 将运行代码显示表达式的结果。

【讨论】:

    【解决方案2】:

    正如 molf 已经指出的那样,您的视图中缺少一个 =。
    应该是&lt;%=

    除此之外,请务必通过在您的控制器中调用 helper_method 使您的控制器方法可用于您的视图。

    如果需要,请查看文档。

    【讨论】:

      猜你喜欢
      • 2011-02-07
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 2019-11-28
      • 2011-03-20
      • 1970-01-01
      相关资源
      最近更新 更多