Как получить доступ к глобальной переменной в представлении в Ruby on Rails? - PullRequest
0 голосов
/ 23 мая 2010

У меня есть модель пользователя.

У меня есть контроллер сеанса, в котором у меня есть глобальная переменная пользователя, которая назначается следующим образом:

$user = User.authenticate(params[:session][:email], params[:session][:password])

(Я сделал пользователя глобальным, чтобы попытаться решить эту проблему, поэтому, если есть лучший способ, пожалуйста, дайте мне знать!)

Мне нужно использовать адрес электронной почты вошедшего в систему пользователя в качестве параметра для отправки на Flex часть моего веб-сайта. На данный момент я создаю ссылку следующим образом:

<%= link_to "secondpage", secondpage_path(:email => @session.$user.email) 

Но я получаю следующую ошибку:

ошибка компиляции /Users/benhartney/rails_projects/talk/app/views/layouts/_header.html.erb:12: синтаксическая ошибка, неожиданный tGVAR ..._ путь (: электронная почта => @ session. $ user.email)) .to_s); @output_buffe ...

Есть также маленькая стрелка, указывающая на $ user

Если я удаляю $ из $ user, я получаю эту ошибку:

неопределенный метод `user 'для ноль: NilClass

Если я уберу

(:email => @session.user.email)

часть, все работает нормально, так что я думаю, что весь код, кроме этого, в порядке.

Может кто-нибудь сказать мне, что я делаю не так?

Спасибо за чтение!

Ответы [ 3 ]

1 голос
/ 23 мая 2010

Я думаю, что вы ищете переменную сеанса.

Rails - это, прежде всего, инфраструктура для создания веб-приложений, и http не имеет состояния, то есть каждый запрос ничего не знает о том, что происходило раньше. Чтобы преодолеть это ограничение, веб-разработчики используют файлы cookie или переменные сеанса для имитации поддержания состояния, то есть данных, между запросами.

Выезд http://guides.rubyonrails.org/action_controller_overview.html#session

1 голос
/ 23 мая 2010

Насколько я понимаю, у вас не может быть глобальной переменной, локальной для чего-то (на этот раз у вас не может быть глобальной переменной, локальной для сессии)

Попробуйте использовать :email => $user.email если вы непреклонны в том, что вам нужна глобальная переменная для чего-либо.

0 голосов
/ 23 мая 2010

Вы также можете попробовать

Thread.current[:email]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...