Ответ 1
Вы уверены, что оба элемента - простые строки? Что произойдет, если вы запустите, скажите
params[:id].to_s == session[:user_id].to_s
?
Я новичок в рельсах после перехода с PHP, и у меня нет конца разочарованиям, но, надеюсь, есть крутая кривая обучения.
Я следовал руководству о том, как сделать твитер-клон в рельсах, и продолжал идти по этому пути, делая его все более и более щебетать.
Итак, у меня есть страница "users" /users/show.html.erb, которая показывает все сообщения от пользователя.
Теперь, если текущий зарегистрированный пользователь совпадает с владельцем страницы, я пытаюсь показать текстовое поле, чтобы пользователь мог добавить новую запись.
У меня есть то, что должно быть очень простым
<% if params[:id] == session[:user_id] %> put the text box here <% end %>
конечно, это не работает, но прямо над ним я выводил как сеанс [: user_id], так и params [: id], а распечатка точно такая же.
Если я устанавливаю value == to! =, я получаю сообщение "Поместите текстовое поле здесь".
какие-либо предложения относительно того, что я делаю неправильно? Я знаю, что эти два значения совпадают, как я вижу в URL-адресе и выходе текущего пользователя. Я также выводил
-<% session[:user_id] %>- -<% params[:id] %>-
чтобы я мог видеть, что на обоих концах параметров нет пробелов или пробелов или других символов, и все выглядит чисто.
Результат выглядит следующим образом
-4c4483ae15a7900fcc000003- -4c4483ae15a7900fcc000003-
который является объектом mongodbId пользователя с тире с обеих сторон, чтобы показать, что нет пробелов или чего-то еще.
Вы уверены, что оба элемента - простые строки? Что произойдет, если вы запустите, скажите
params[:id].to_s == session[:user_id].to_s
?
Это может быть похоже на jasonpgignac. Если вы войдете в IRB:
num = "7"
num2 = 7
num == num2 # => false
Убедитесь, что оба типа одного типа. Помещение <%= num2 %>
будет фактически инициировать метод .to_s... следовательно, почему два кажутся равными при выводе их на странице .erb.
Кроме того, вы можете переместить это сравнение в контроллер. Что-то вроде:
@is_user_home = params[:id].to_s == session[:user_id].to_s
Затем вы можете указать свое мнение:
<% if @is_user_home %>
code here
<% end %>
Это делает код более легким для чтения.
Как уже было сказано, в большинстве случаев такие проблемы вызваны несоответствием сравниваемых типов. Простое добавление to_s
к обеим переменным решает большинство случаев.
Здесь проверьте отличный источник, чтобы узнать больше о всех типах сравнений, используемых в Ruby.