字符串比较在 Ruby 中不起作用

发布于 2024-12-11 14:05:26 字数 353 浏览 0 评论 0原文

我想比较给定的两个值

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

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

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

但是没用!!值 current.role.title 以 Varchar 形式存储在数据库中。

I want to compare two values given

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

but this comparison doesn't seem to work at all. I checked for the value in current_user.role.title and it prints "Test" ; but when i compare it inside the html page this fails. I also tried doing

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

but it doesnt work!! The value current.role.title is stored as a Varchar in the database.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

§对你不离不弃 2024-12-18 14:05:26

为了扩展我的评论,看起来您设法在 title 中获得尾随空格。当你尝试时,你会得到 -Test -

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

并且 current_user.role.bytes.count 是 5,所以它只是一个普通的空格(或可能是一个制表符)而不是一些 Unicode 混乱。

您可能想在使用 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 会丢弃尾部空格。

To expand on my comment, it looks like you managed to get a trailing space in your title. You're getting -Test - when you try:

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

and current_user.role.bytes.count is 5 so it is just a plain space (or possibly a tab) rather than some Unicode confusion.

You probably want to clean up your data before storing it with strip or strip! and you'll want to do the same to any data you already have.

One final check would be to try this:

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

The trailing space also explains why your split approach behaved as expected:

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

Just string.split will split (almost always) split on spaces so role_Array ended up looking like ['Test'] because split would throw away the trailing space.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文