Сравнение строк не работает в Ruby - PullRequest
1 голос
/ 22 октября 2011

Я хочу сравнить два значения, заданные

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

, но это сравнение, похоже, не работает вообще.Я проверил значение в current_user.role.title, и он печатает «Тест»;но когда я сравниваю его внутри HTML-страницы, это не удается.Я также попытался сделать

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

, но это не работает !!Значение current.role.title хранится в базе данных как Varchar.

1 Ответ

4 голосов
/ 22 октября 2011

Чтобы расширить мой комментарий, похоже, вам удалось получить конечный пробел в вашем title. Вы получаете -Test -, когда вы пытаетесь:

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

и current_user.role.bytes.count равно 5, поэтому это просто простое пространство (или, возможно, табуляция), а не некоторая путаница с Юникодом.

Возможно, вы захотите очистить свои данные перед сохранением их с помощью 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 отбросит конечный пробел.

...