显示文本而不是NULL值

时间:2013-08-22 15:25:07

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

3.5并希望在category_id字段中显示文本而不是NULL值

     <% if  e.categories_id == "NULL" %>
         <%= e.categories_id ="Don't have value"  %> 

     <% else %>
         <%= e.categories_id ="Has value"  %> 
     <% end %>

有人可以帮我吗?

我试过了

   <% if  e.categories_id =   NULL  %>
   <% if  e.categories_id ==  NULL  %>
   <% if  e.categories_id =  "NULL" %>
   <% if  e.categories_id == "NULL" %>

4 个答案:

答案 0 :(得分:2)

<%= e.categories_id.nil? ? "Don't have value" : "Has value" %>

甚至更好:

<%= e.categories_id ? "Has value" : "Don't have value" %>

答案 1 :(得分:0)

<%= e.categories_id || "There's no categories_id" %>

但严重的是,这个问题太多了。首先,你应该知道足够多的Ruby知道它使用nil而不是NULL。名为categories_id的外键建议您使用名为Categories的模型。型号名称应该是单数。

答案 2 :(得分:0)

<% if e.categories_id.blank? %>
     <p>"Don't have value" </p> (or whatever you want displayed)
 <% else %>
     <%= e.categories_id %> (should display the value of e.categories_id)
 <% end %>

我更喜欢.blank? Rails用来检查.empty的方法?和.nil?另外使用if else比Terinary运算符更具可读性? :

答案 3 :(得分:0)

如果您只想显示“没有价值”,则可以执行此操作:

<%= e.categories_id || "Don't have value" %>

您可以做的是设置值:

<% e.categories_id ||= "Don't have value" %>
<%= e.categories_id %>

如果要更改数据的值,则不应在视图中执行此操作。您应该在控制器中进行所有数据操作,甚至更好,模型(fat model, skinny controller)。

您还有另一个问题:在Ruby null中称为nil。所以对nil的测试看起来像这样:

if whatever == nil
   #Do anything
end

Ruby的优点是nil在语句中被视为false,因此您可以省略== nil以获得:

if whatever
   #Do anything
end