javascript - 在 session 中传递所选国家/地区(下拉列表)的值,然后重新加载当前页面(Rails 4)

标签 javascript ruby-on-rails ruby ruby-on-rails-3

在我的 Rails 应用程序中,我试图在页脚中询问用户他想查看哪个国家/地区(法国/美国/德国...),然后将其存储在 session 中并重新加载他当前所在的页面上。

请注意:我只想重新加载当前页面,但不想在应用程序的 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>

这里,如果 Controller 在/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 

关于javascript - 在 session 中传递所选国家/地区(下拉列表)的值,然后重新加载当前页面(Rails 4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25125613/

相关文章:

ruby - 如何从 Padrino 控制台测试 Padrino Controller

ruby - 无法使用 gsub 和 hash 修改卡住的字符串错误

javascript - rails : add form field value to data confirm message?

Javascript 数组和 While 循环

javascript - 如何根据 jQuery 中的滚动位置将 addClass() 添加到两个不同导航的事件链接?

ruby-on-rails - 将 p12 文件安全地存储在 Rails 中

ruby-on-rails - 订购 .each 结果在 View 中

javascript - 所有元素都可以有 onload 属性

ruby-on-rails - 有人可以解释为什么名称为 'location' 的 Controller 方法在 Rails 3.2 中有一些意外的行为

ruby - Sinatra 命令在模块中不起作用