我想比较给出的两个值
<% if (current_user.role.title).eql?( "Test") %>
但这种比较似乎根本不起作用。我检查了current_user.role.title
中的值并打印出“Test”;但是当我在html页面中进行比较时,这会失败。我也尝试过
<% if current_user.role.title == "Test" %>
但它不起作用!!值current.role.title
作为Varchar存储在数据库中。
为了扩展我的评论,看起来你设法在你的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
会扔掉尾随空间。