字符串比较不适用于Ruby

时间:2011-10-22 06:13:10

标签: ruby-on-rails ruby string ruby-on-rails-3 string-comparison

我想比较给定的两个值

<% if (current_user.role.title).eql?( "Test") %>

但这种比较似乎根本不起作用。我检查了current_user.role.title中的值并打印出“Test”;但是当我在html页面中进行比较时,这会失败。我也尝试过做

<% if current_user.role.title == "Test" %>

但它不起作用!!值current.role.title在数据库中存储为Varchar。

1 个答案:

答案 0 :(得分:4)

要扩展我的评论,您似乎设法在title中获得了一个尾随空格。您在尝试时获得-Test -

Rails.logger.error '-' + current_user.role.title + '-'

current_user.role.bytes.count是5,所以它只是一个普通的空间(或者可能是一个标签),而不是一些Unicode的混淆。

您可能希望在使用stripstrip!存储数据之前清理数据,并且您希望对已有的数据执行相同操作。

最后一次检查是尝试这个:

<% if current_user.role.title.strip == "Test" %>

尾随空格还解释了为什么split方法符合预期的行为:

role_Array = (current_user.role.title).split
if role_Array[0] != "Test"

只有string.split会拆分(几乎总是)拆分空格,因此role_Array最终看起来像['Test'],因为split会丢弃尾随空格。

相关问题