У меня есть такой сценарий в моем html.erb:Javascript «если оператор» и встроенный рубин (переменный рубин всегда верно)
if(browser == "Firefox") {
$(".browser-warning").show();
}
else if(browser == "Safari") {
if(browser.version < 6) {
$(".browser-warning").show();
}
}
else if((BrowserDetect.browser != "Chrome") && (<%= params[:section_id].to_s %> != '')) {
console.log('yo');
<%= session[:is_chrome] = false %>
<%= Rails.logger.debug = "I made is_chrome false, wtf?" %>
}
else {
$(".browser-warning").show();
}
Я бег этого сценария из браузера и условия Chrome возвращает ложные.
но сеанс [: is_chrome] всегда становится ложным и возвращает рекордер Rails «Я сделал is_chrome false, wtf?». НО. JS-консоль не печатает «yo» в консоли. Почему это так и как правильно определить значение сеанса только в том случае, если утверждение JS «if» истинно?
Спасибо, все.
Вы пытаетесь оценить что-то на сервере на основе значения на клиенте? – Mathletics
@ Математика да, я. –
Да, вы не можете этого сделать, понимаете? Поскольку Ruby уже был оценен сервером к моменту запуска JS в браузере. – Mathletics