我如何修复此if / else语句,因此没有参数错误

时间:2016-01-13 22:47:38

标签: ruby-on-rails

您好我是rails的初学者,我正在尝试创建一个非常基本的Todo列表应用程序。

对于show action查看单个Todo列表的观点,我试图编写一个if / else语句,表示当complete_by日期为空时(因为有些人可能不想要特定列表)如果日期没有完整,则说明complete_by是否有日期,它会说明日期。

以下是我创建新列表的表单:

enter image description here

这是我的代码(在/app/views/lists/show.html.erb中)

<h2><%= @list.title %></h2>
<% if @list.complete_by(presence: false) %>
    <h4>This list has no completion date</h4>
<% else %>
    <h4>To be completed by: <%= @list.complete_by %></h4>
<% end %>
<%= link_to 'Back', lists_path %>

我知道<% if @list.complete_by(presence: false) %>行是不正确的,但我该怎样做,以便不会出现任何参数错误:enter image description here

感谢您的时间,

布赖恩

1 个答案:

答案 0 :(得分:1)

只需使用nil检查值是否为<% if @list.complete_by.nil? %> <h4>This list has no completion date</h4> <% else %> <h4>To be completed by: <%= @list.complete_by %></h4> <% end %>

<% if @list.complete_by %>
  <h4>To be completed by: <%= @list.complete_by %></h4>
<% else %>
  <h4>This list has no completion date</h4>
<% end %>

您还可以通过交换条件来利用nil-to-false评估:

<% if !@list.complete_by %>
  <h4>This list has no completion date</h4>
<% else %>
  <h4>To be completed by: <%= @list.complete_by %></h4>
<% end %>

或(稍微不那么可读)

bash