【问题标题】:check null and display accordingly检查 null 并相应显示
【发布时间】:2015-04-18 13:01:08
【问题描述】:

我正在使用 ruby​​ on rails 并创建索引方法来显示所有学生。我的学生表包括 EnrollmentDate 其中 datetime 字段并且是 可为空。

我在html中显示学生列表的表格主体部分如下;

<tbody>
<% @students.each do |student| %>
  <tr>
    <td><%= student.LastName %></td>
    <td><%= student.FirstMidName %></td>
    <td><%=l student.EnrollmentDate, format: :long %></td>
    <td><%=l student.created_at, format: :long %></td>
    <td>
      <%= link_to t('.edit', :default => t("helpers.links.edit")),
                  edit_student_path(student), :class => 'btn btn-default btn-xs' %>
      <%= link_to t('.details', :default => t("helpers.links.details")),
                  student_path(student), :class => 'btn btn-default btn-xs' %>
      <%= link_to t('.destroy', :default => t("helpers.links.destroy")),
                  student_path(student),
                  :method => :delete,
                  :data => { :confirm => t('.confirm', :default => t("helpers.links.confirm", :default => 'Are you sure?')) },
                  :class => 'btn btn-xs btn-danger' %>
    </td>
  </tr>
<% end %>

这里的问题是 EnrollmentDate 中的 null。我使用本地化来格式化 EnrollmentDate,当数据为空时会产生错误。错误是

ActionView::Template::Error(对象必须是 Date、DateTime 或 Time 对象。没有给出。):

所以请指导我验证 nil 并根据该格式发生

【问题讨论】:

    标签: ruby ruby-on-rails-4 null


    【解决方案1】:

    尝试这样做:

     <td><%=l student.EnrollmentDate, format: :long if student.EnrollmentDate.present? %></td>
    

    你也可以这样做:

    <td><%=l student.EnrollmentDate, format: :long unless student.EnrollmentDate.nil? %></td>
    

    如果这不起作用,那么你可以这样做:

    <% if student.EnrollmentDate.present? %>
       <%=l student.EnrollmentDate, format: :long %>
    <% end %>
    

    因此,如果注册日期为零,则不会显示任何内容。

    【讨论】:

      【解决方案2】:

      我会这样做:

      <td>
        <% if student.EnrollmentDate %>
          <%=l student.EnrollmentDate, format: :long %>
        <% else %>
          not enrolled yet
        <% end %>
      </td>
      

      另一个 - 更好的选择 - 可能是使用总是返回有用值(格式化字符串或某些字符串)的演示者

      顺便说一句:Ruby 中的命名约定是下划线多个单词,不要在变量名中使用驼峰式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-17
        • 1970-01-01
        相关资源
        最近更新 更多