2016-05-25 2 views
1

У меня есть простой блок выбора с годами и значением как такПрисвоить переменную Jquery к сеансу Rails переменной

<div id="year_selection_area" class="controls text-center"> 
    <select class="form-control " name="Legislation year" id="dueYear"> 
    <OPTION VALUE='2017' >2017</OPTION> 
    <OPTION VALUE='2016' >2016</OPTION> 
    <OPTION VALUE='2015'>2015</OPTION> 
    <OPTION VALUE='2014' >2014</OPTION> 
    <OPTION VALUE='2013'>2013</OPTION> 
    <OPTION VALUE='2012' >2012</OPTION> 
    <OPTION VALUE='2011'>2011</OPTION> 
    <OPTION VALUE='2010'>2010</OPTION> 
    <OPTION VALUE='' DISABLED>MORE YEARS ADDED SOON</OPTION> 
    </select> 
</div> 

я также задаю выбран в начале через смесь JQuery и рельсы

<% if session[:year_browsing]==nil%> 
    <% session[:year_browsing] = 2016%> 
<% else %> 
    <%= session[:year_browsing] %> 
<%end%> 
<script type="text/javascript"> 
    jQuery(document).ready(function($) { 
    $('.form-control option[value=<%= session[:year_browsing] %>]').attr('selected','selected'); 
    }); 

однако мне нужно изменить переменную сеанса в зависимости от того, что пользователь нажмет Я попробовал, если/другое заявление, но он выполняет все рубина, как только он попадает в том, что на функции изменения

$(".form-control").change(function() { 
    alert($(".form-control").val()); 
    var selectedValue = $(".form-control").val(); 

    if (selectedValue=='2017'){ 
    <% session[:year_browsing] = 2017 %> 
    } 
    else if (selectedValue=='2016'){ 
    <% session[:year_browsing] = 2016 %> 
    } 
    else if ($(".form-control").val()=='2015'){ 
    <% session[:year_browsing] = 2015 %> 
    } 
    else if ($(".form-control").val()=='2014'){ 
    <% session[:year_browsing] = 2014 %> 
    } 
    else if ($(".form-control").val()=='2013'){ 
    <% session[:year_browsing] = 2013 %> 
    } 
    else if ($(".form-control").val()=='2012'){ 
    <% session[:year_browsing] = 2012 %> 
    } 
    else if ($(".form-control").val()=='2011'){ 
    <% session[:year_browsing] = 2011 %> 
    } 
    else if ($(".form-control").val()=='2010'){ 
    <% session[:year_browsing] = 2010 %> 
    } 
    else{ 
    <% session[:year_browsing] = 0 %> 
    } 
}); 
+1

вы должны послать метод AJAX, когда вы хотите изменить переменная сеанса, вы не можете обновлять сеанс по видам – Thorin

+0

Я бы предложил использовать локальное хранилище для браузера вместо хранилища сеансов, чтобы добиться того же. – Sebin

+0

@Sebin спасибо, я отправил свое решение ниже –

ответ

3

Спасибо очень много Sebin (https://stackoverflow.com/users/1684772/sebin)

Я в конечном итоге выбор, чтобы сохранить его в памяти браузера с этим кодом

<script type="text/javascript"> 
    jQuery(document).ready(function($) { 
    var myVar = localStorage['myKey'] || '2016'; 
    $('.form-control option[value='+myVar+']').attr('selected','selected'); 
    }); 

    $(".form-control").change(function() { 
    alert($(".form-control").val()) ; 
    var selectedValue = $(".form-control").val(); 
    localStorage['myKey'] = selectedValue; 
    }); 
</script> 
Смежные вопросы