Javascript 当用户在选择框中选择选项时,使用window.location.href重定向用户只会更改导航器中url的最后一位

Javascript 当用户在选择框中选择选项时,使用window.location.href重定向用户只会更改导航器中url的最后一位,javascript,jquery,ruby-on-rails,select,Javascript,Jquery,Ruby On Rails,Select,在我所有的rails应用程序页面中,我都有一个选择框,该框会根据环境的不同而变化: <% if session[:user_status]%> <% if params[:office_id] %> <%= select_tag "dash_select", options_for_select([["<i class='fa fa-lock select_icon' aria-hidden='true'></i>"+se

在我所有的rails应用程序页面中,我都有一个选择框,该框会根据环境的不同而变化:

<% if session[:user_status]%>
    <% if params[:office_id] %>
      <%= select_tag "dash_select", options_for_select([["<i class='fa fa-lock select_icon' aria-hidden='true'></i>"+session[:user_status], session[:user_status]], ["all offices", "all"]]), class: "form-control custom-office-select wide main-select-bar" %>
    <% elsif params[:account_asso_id] %>
      <%= select_tag "dash_select", options_for_select([["<i class='fa fa-lock select_icon' aria-hidden='true'></i>"+session[:user_status], session[:user_status]], ["<i class='fa fa-globe' aria-hidden='true'></i>
all offices", "all"]], "all"), class: "form-control custom-office-select wide"  %>
    <% else %>
      <%= select_tag "dash_select", options_for_select([["<i class='fa fa-lock select_icon' aria-hidden='true'></i>"+session[:user_status], session[:user_status]], ["<i class='fa fa-globe select_icon' aria-hidden='true'></i>all offices", "all"]], session[:user_status]), class: "form-control custom-office-select wide"  %>
    <% end -%>
  <% elsif session[:user_status] %>
    <%= select_tag "dash_select", options_for_select([session[:user_status], session[:user_status]]), class: "form-control" %>
  <% else %>
  <% end -%>

我写了一些当选择选择框的选项时触发的JS:我根据选择的选项将用户重定向到不同的页面

   $(document).ready(function() {
      $('select').niceSelect();
      $("#dash_select").change(function(){

        if ($(this).val() == "all") {
              window.location.href = "association/account_assos/"+<%=session[:account_asso_id]%>+"/offices"
            }
        else if ($(this).val() == "admin"){
              window.location.href = "association/account_assos/"+<%=session[:account_asso_id]%>
        }
        else if ($(this).val() == "employee"){
          window.location.href = "/users/"+ <%=session[:user_id] %>
        }
        else {
              var office_id = $(this).val();
              window.location.href = "association/office/"+office_id;
        }
      });
    });
$(文档).ready(函数(){
$(“select').niceSelect();
$(“#破折号选择”)。更改(函数(){
if($(this.val()=“all”){
window.location.href=“协会/账户\协会/”++“/办公室”
}
else if($(this.val()=“admin”){
window.location.href=“关联/账户\关联/”+
}
else if($(this.val()=“employee”){
window.location.href=“/users/”+
}
否则{
var office_id=$(this.val();
window.location.href=“协会/办公室/”+办公室id;
}
});
});
当我在选择框中更改所选选项时,导航器中的url确实会更改,但不是更改整个url,而是简单地在“”上构建。例如,它会抑制当前url的最后/位,并在其上构建新url

例如,如果我当前所在页面的url为: "" 假设我将我的select改为“admin”,它将删除当前url中的“/users”部分,并在其上构建。这将为我提供:


如何更改整个url而不仅仅是最后一位?

这是因为您使用的是相对路径。将您提供的URL字符串更改为绝对URL字符串,或在其前面加一个
/
,使其相对于基本文件夹

还要注意,
switch
语句可能更适合您使用的模式。试试这个:

$("#dash_select").change(function() {
    var url;
    switch ($(this).val()) {
        case: 'all':
            url = "/association/account_assos/<%= session[:account_asso_id] %>"; 
            break;
        case: 'admin':
            url = "/association/account_assos/<%= session[:account_asso_id] %>";
            break;
        case: 'employee':
            url = "/users/<%= session[:user_id] %>";
            break;
        default:
            url = "/association/office/" + $(this).val();                
    }
    window.location.assign(url);
});
$(“#破折号选择”)。更改(函数(){
var-url;
开关($(this.val()){
案例:“全部”:
url=“/association/account_assos/”;
打破
案例:“管理员”:
url=“/association/account_assos/”;
打破
案例:“雇员”:
url=“/users/”;
打破
违约:
url=“/association/office/”+$(this.val();
}
window.location.assign(url);
});