我想比较给定的两个值
<% if (current_user.role.title).eql?( "Test") %>
但这种比较似乎根本不起作用。我检查了current_user.role.title
中的值并打印出“Test”;但是当我在html页面中进行比较时,这会失败。我也尝试过做
<% if current_user.role.title == "Test" %>
但它不起作用!!值current.role.title
在数据库中存储为Varchar。
答案 0 :(得分:4)
要扩展我的评论,您似乎设法在title
中获得了一个尾随空格。您在尝试时获得-Test -
:
Rails.logger.error '-' + current_user.role.title + '-'
和current_user.role.bytes.count
是5,所以它只是一个普通的空间(或者可能是一个标签),而不是一些Unicode的混淆。
您可能希望在使用strip
或strip!
存储数据之前清理数据,并且您希望对已有的数据执行相同操作。
最后一次检查是尝试这个:
<% 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
会丢弃尾随空格。