【问题标题】:Set a Rails/Ruby variable using Javascript via Ajax通过 Ajax 使用 Javascript 设置 Rails/Ruby 变量
【发布时间】:2012-12-26 06:43:50
【问题描述】:

在我的导航列表中,我有一个包含所有用户的下拉框选择,仅供管理员使用。管理员可以选择一个用户,并通过ajax更新视图以显示所选用户的信息。

视图更新如下:

$(#Users).change(function() {
    $ajax({
        ... yada yada update information in view.

但是,我想要实现的是,如果我更改为另一个视图/url(例如我的帐户 html.erb 到 mygraph.html.erb)或刷新我的页面,我希望用户下拉框选择持续存在我所做的用户选择。

我曾想过使用 rails cookie 来做到这一点。但我必须重定向到控制器来设置 cookie。

我尝试了一个 POST ajax 调用,

$(#Users).change(function() {
  $.ajax({
    ...
    data: {
       "<%= cookies[:selected] %>": this.value

它不起作用,但出于某种原因,我已经怀疑它会这么简单。

我应该如何实施这个解决方案?

【问题讨论】:

    标签: jquery ruby-on-rails ruby ajax cookies


    【解决方案1】:

    您不必重定向到控制器操作。您可以对控制器操作进行 ajax 调用。您可以在控制器操作中设置 cookie,如下所示:

     $(function(){
       $('#user_select')change(function(){
         value = $(this).val()
         $.post("controller/action",{selected_value : value}, function(data, status){
           if(status == "success")
           {
             alert(data);
           } 
        });
       return false;
       })
      })
    

    控制器:

     def action
       cookies[:name]=params[:selected_value]
       render :text => "success"
     end 
    

    【讨论】:

    • 不错!一个简单的问题,我应该如何将 user_select 值传递给操作?
    • 渲染是相当侵入但不可避免的对吧?我尝试使用 render :nothing => true 但它仍然显示一条空消息。我使用了渲染 json: 的东西,但这对我来说似乎是一个 hack:C。无论如何,非常感谢!
    猜你喜欢
    • 2018-01-17
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2016-11-09
    • 2022-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多