在会话中传递所选国家(下拉)的值,然后重新加载当前页面(Rails 4)

Pass value of selected country (dropdown) in session and then reload current page (Rails 4)

本文关键字:新加载 然后 加载 当前页 Rails 的值 国家 下拉 会话      更新时间:2023-09-26

在我的Rails应用程序中,我试图在页脚询问用户他想看到哪个国家(法国/美国/德国…),然后将此存储在会话中并重新加载他当前所在的页面。

注意:我只是想当前页面重新加载,但我不想在我的应用程序的url中添加一个参数(即我不想example.com/browser_country=France)。我希望它们保持原样(example.com)。

我该怎么做呢?

这是我下面的代码,但它不工作(我是一个Rails新手):

<footer class="footer">
    <small>
        MySuper Website <br/>
        <select name= "browser_country", :onchange => "location.href = '#{current_path}'"  >
           <option value="">Select Country</option>
              <option value="1">France</option>
              <option value="2">United States</option>
        </select>
    </small>

如果在/app/controllers/static_pages_controller.rb上加载页面(主页)的控制器

class StaticPagesController < ApplicationController
  def home        
  end
  def set_country_into_session
    session[:country] = :browser_country # i'm putting in session the country selected in the dropdown
  end       
end

您需要在此过程中添加一个ajax调用。

# your js file
$(function() {
    $('select[name="browser_country"]').change(function() {
        $.ajax({
            url: 'static_pages/set_country_into_session',
            data: 'browser_country=' + this.value,
            success: function() {
                location.reload();
            }
        });
    });
});
# static_pages_controller.rb
def set_country_into_session
  session[:country] = params[:browser_country]
  render text => :ok
end