nee*_*zer 11 ruby database ruby-on-rails ruby-on-rails-3 ruby-on-rails-4
我怎么能做到这一点?
<% for agent in @broker.agents %>
...
<% if agent.cell %><span class="cell-number">Cell: <%= agent.cell %></span><% end %>
...
<% end %>
Run Code Online (Sandbox Code Playgroud)
我想测试代理是否有一个单元格编号,如果是,则显示条件内的内容.我目前所做的似乎不起作用; 它只显示"Cell:".
思考?
Adr*_*ton 14
这就是你要求的:
<% for agent in @broker.agents %>
<% unless agent.cell.blank? %>
<span class="cell-number">Cell: <%= agent.cell %></span>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
细胞?无论单元格是零还是空字符串,该方法都有效.Rails为所有ActiveRecord属性添加了类似的功能.这看起来会更好一些:
<% for agent in @broker.agents %>
<span class="cell-number">
Cell: <%= agent.cell? ? "none given" : agent.cell %>
</span>
<% end %>
Run Code Online (Sandbox Code Playgroud)
问号和冒号形成一个快速的"if?then:else"语句.上面的代码中有两个问号,因为一个是方法名称单元格的一部分?另一个是if/then/else结构的一部分.
tec*_*ams 10
我正在对这个问题给出一个非常详细的答案" 如何检查列是否有值? ".
首先,重要的是要注意属性中可以包含四种值.
以下是在这种情况下可以使用的所有现有方法(Ruby 2.2.2)的详细行为.
第一种方法: .empty?
对于nil值=>引发异常
2.2.2 :037 > object.attribute
=> nil
2.2.2 :025 > object.attribute.empty?
NoMethodError: undefined method `empty?' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)对于空值,即"" 没有空格的空字符串
2.2.2 :037 > object.attribute
=> ""
2.2.2 :025 > object.attribute.empty?
true
Run Code Online (Sandbox Code Playgroud)带空格 ""的空字符串.
2.2.2 :041 > object.attribute
=> " "
2.2.2 :042 > object.attribute.empty?
=> false
Run Code Online (Sandbox Code Playgroud)数据库中存在的值,即非空字符串.
2.2.2 :045 > object.attribute
=> "some value"
2.2.2 :046 > object.attribute.empty?
=> false
Run Code Online (Sandbox Code Playgroud)第二种方法: .nil?
零值即存储在数据库中的"nil"
2.2.2 :049 > object.attribute
=> nil
2.2.2 :050 > object.attribute.nil?
=> true
Run Code Online (Sandbox Code Playgroud)空值即""一个没有空格的空字符串
2.2.2 :053 > object.attribute
=> ""
2.2.2 :054 > object.attribute.nil?
=> false
Run Code Online (Sandbox Code Playgroud)带空格 ""的空字符串.
2.2.2 :057 > object.attribute
=> " "
2.2.2 :058 > object.attribute.nil?
=> false
Run Code Online (Sandbox Code Playgroud)数据库中存在的值,即非空字符串.
2.2.2 :061 > object.attribute
=> "some value"
2.2.2 :062 > object.attribute.nil?
=> false
Run Code Online (Sandbox Code Playgroud)第三种方法: .blank?
零值即存储在数据库中的"nil"
2.2.2 :065 > object.attribute
=> nil
2.2.2 :066 > object.attribute.blank?
=> true
Run Code Online (Sandbox Code Playgroud)空值即""一个没有空格的空字符串
2.2.2 :069 > object.attribute
=> ""
2.2.2 :070 > object.attribute.blank?
=> true
Run Code Online (Sandbox Code Playgroud)带空格 ""的空字符串.
2.2.2 :073 > object.attribute
=> " "
2.2.2 :074 > object.attribute.blank?
=> true
Run Code Online (Sandbox Code Playgroud)数据库中存在的值,即非空字符串.
2.2.2 :075 > object.attribute
=> "some value"
2.2.2 :076 > object.attribute.blank?
=> false
Run Code Online (Sandbox Code Playgroud)第四种方法: .present?
零值即存储在数据库中的"nil"
2.2.2 :088 > object.attribute
=> nil
2.2.2 :089 > object.attribute.present?
=> false
Run Code Online (Sandbox Code Playgroud)空值即""一个没有空格的空字符串
2.2.2 :092 > object.attribute
=> ""
2.2.2 :093 > object.attribute.present?
=> false
Run Code Online (Sandbox Code Playgroud)带空格 ""的空字符串.
2.2.2 :096 > object.attribute
=> " "
2.2.2 :097 > object.attribute.present?
=> false
Run Code Online (Sandbox Code Playgroud)数据库中存在的值,即非空字符串.
2.2.2 :100 > object.attribute
=> "some value"
2.2.2 :101 > object.attribute.present?
=> true
Run Code Online (Sandbox Code Playgroud)根据您所面临的情况,您可以使用四种中的任何一种.
谢谢
if !agent.cell.blank?
Run Code Online (Sandbox Code Playgroud)
有用。
| 归档时间: |
|
| 查看次数: |
17705 次 |
| 最近记录: |