Rails 3.2.1-将Javascript变量/数据获取到Rails控制器

Rails 3.2.1-将Javascript变量/数据获取到Rails控制器,javascript,jquery,ruby-on-rails,ruby,web-applications,Javascript,Jquery,Ruby On Rails,Ruby,Web Applications,我正在开发一个rails3.2.1app,希望将一些Javascript变量传递给Rails控制器。以下是一些更详细的信息: 我的小提琴: fiddle没有显示的是jQuery UI可排序:$(“#菜单项”).sortable() 我想在ThingsController中的Rails“execute”方法中为每个项目处理以下信息: 项目是否可见(我想我应该做一些类似$('#item_1)。是(':visible')) 显示以下哪一项-“添加”、“减少”或两者都不显示 项目的id 项目在可排序列表

我正在开发一个
rails3.2.1
app,希望将一些Javascript变量传递给Rails控制器。以下是一些更详细的信息:

我的小提琴:

fiddle没有显示的是jQuery UI可排序:
$(“#菜单项”).sortable()

我想在ThingsController中的Rails“execute”方法中为每个项目处理以下信息:

  • 项目是否可见(我想我应该做一些类似$('#item_1)。是(':visible'))
  • 显示以下哪一项-“添加”、“减少”或两者都不显示
  • 项目的id
  • 项目在可排序列表中的顺序/位置
  • 我的做法是将包含上述数据的AJAX发送到“things/execute”操作,并以某种方式将其路由并响应传入的AJAX


    我隐约知道一些零碎的东西应该是什么样子,但我很难把所有的东西都放在一起。我真的很感谢你的帮助!

    所以,你需要解析你的HTML来从中获取信息

    范例

    HTML:

    <div id="my_content">
      <div id="div1" class="reduce" style="visibility: visible;"></div>
      <div id="div2" class="add" style="visibility: visible;"></div>
      <div id="div3" class="add" style="visibility: visible;"></div>
      <div id="div4" class="reduce" style="visibility: visible;"></div>
    
      <div id="div5" class="reduce" style="visibility: hidden;"></div>
      <div id="div6" class="add" style="visibility: hidden;"></div>
      <div id="div7" class="add" style="visibility: hidden;"></div>
      <div id="div8" class="reduce" style="visibility: hidden;"></div>
    </div>
    
    var parsed_data = {}
    var order = 1
    
    $('#my_content > div').each(function() {
      // Some if else
      var element_class = $(this).hasClass('reduce') ? 'reduce' : 
                        ( $(this).hasClass('add')    ? 'add' : 'unkown')
    
      parsed_data['data'+ order] = {
        element_id:    $(this).attr('id'),
        display_class: element_class,
        visibility:    $(this).css('visibility'),
      }
    
      order++
    })
    
    def your_controller_function
      params.each do |key, div|
        print "DIV N°#{key}"
        print "  Id #{element_id}"
        print "  Displayed class #{display_class}"
        print "  Visibility #{visibility}"
      end
    end
    
    然后使用AJAX调用控制器:

    $.ajax({
      url: "<CONTROLLER_URL>",
      type: "POST",
      dataType: 'json', // data returned, not data sent
      data: parsed_data
    }).done(function(data) {
      console.log('Done')
    })
    

    我希望它不会太凌乱,而且会有所帮助。

    另一方面,请在将其发布到internet站点之前升级到最新的3.2.x版本,否则它将被黑客攻击。