направляющие, сравнивающие значения параметрических усилителей [: идентификатор] и сессия [: user_id] не работа

Я плохо знаком с направляющими после перемещения от PHP и не имею никакого конца разочарованиям, но надо надеяться существует крутая кривая обучения.

Я следовал руководству по тому, как заставить Твиттер клонироваться в направляющих и продолжил вдоль того пути, делающего его все больше Твиттера как.

Таким образом, у меня есть 'пользовательская' страница,/users/show.html.erb, которые показывают все сообщения от пользователя.

Теперь, если в настоящее время входил в систему, пользователь совпадает с владельцем страницы, я пытаюсь показать текстовое поле так, чтобы пользователь мог добавить новую запись.

Я имею то, что должно быть очень простым

<% if params[:id] == session[:user_id] %>
    put the text box here
<% end %>

конечно, это не работает, но прямо выше его я произвел обоих сессия [: user_id] и параметрические усилители [: идентификатор], и распечатка является точно тем же.

Если я установил == на! =, я становлюсь 'помещенным текстовое поле здесь' сообщение.

какие-либо предложения относительно того, что я делаю неправильно? Я знаю эти два значения соответствие, как я вижу в URL и выводе в настоящее время зарегистрированный пользователь. Я также произвел

-<% session[:user_id] %>-
-<% params[:id] %>-

так, чтобы я видел, что нет никаких разрывов или пробелов или других символов на любом конце параметров, и все это выглядит чистым.

Вывод похож на это

-4c4483ae15a7900fcc000003-
-4c4483ae15a7900fcc000003- 

который является mongodb objectId пользователя с тире с обеих сторон, чтобы показать, что нет никаких пробелов или чего-либо.

11
задан pedalpete 19 July 2010 в 17:15
поделиться

2 ответа

Вы уверены, что оба элемента представляют собой простые строки? Что произойдет, если вы сбежите, скажем,

params[:id].to_s == session[:user_id].to_s

?

17
ответ дан 3 December 2019 в 06:19
поделиться

Это может быть похоже на то, что указал 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 %>

Это упрощает чтение кода.

2
ответ дан 3 December 2019 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: