Я поддерживаю 3 валюты в своем приложении GBP, JMD, USD
.
Когда пользователь выбирает валюту на одной странице, он перезагружает страницу и соответственно устанавливает переменную session[:currency]
.Проблема в том, что в зависимости от валюты, которую они выбирают из 3, поведение не всегда предсказуемо и одинаково.
Возможно, я просто слишком долго смотрел на эту логику, но не могу понять,почему это не работает, и мне бы понравилась лишняя пара глаз.
Так что я начал с этого в моем application_controller.rb
:
unless params[:currency].blank?
if params[:currency] != session[:currency] || session[:previous_currency].blank?
session[:previous_currency] = session[:currency]
session[:currency] = params[:currency]
end
else
if session[:currency].blank?
session[:currency] = 'JMD'
end
end
Это действительно не захватывало USD, GBP
.
Итак, с тех пор это было изменено так:
unless params[:currency].blank? && session[:currency].blank?
if (params[:currency].eql? "JMD") || (session[:currency].eql? "JMD")
session[:currency] = 'JMD'
session[:locale] = :en
session[:previous_currency] = 'GBP'
elsif (params[:currency].eql? "GBP") || (session[:currency].eql? "GBP")
session[:locale] = :"en-GB"
elsif (params[:currency].eql? "USD") || (session[:currency].eql? "USD")
session[:locale] = :en
elsif params[:currency] != session[:currency] || session[:previous_currency].blank?
session[:previous_currency] = session[:currency]
session[:currency] = params[:currency]
end
else
session[:currency] = 'JMD'
session[:locale] = :en
end
Проблема в том, что этот не работает, когда я перехожу из любой валюты в GBP
, и я могу 'Я не могу понять, почему.
Я имею в виду, скажем, я изменил с USD
на GBP
.Если я перехожу на другую страницу (скажем, домашнюю страницу), она возвращается к валюте по умолчанию JMD
.Когда я хочу, чтобы он остался GBP
точно так же, как если бы я переключился на USD
и изменил страницы, все осталось в USD
.
Чего мне не хватает?