2013-07-18 38 views
0

我正在研究一個Rails 3.2.1應用程序,並希望將一些Javascript變量傳遞給Rails控制器。這裏有一些更多的細節:Rails 3.2.1 - 將Javascript變量/數據導入Rails控制器

我JS提琴:http://jsfiddle.net/PauWy/475/

什麼小提琴不顯示,一個jQuery UI排序:$("#menu-items").sortable();

,我想在我的Rails的下列信息工作執行「在ThingsController方法爲每個項目:

  1. 無論該項目是可見的(我想我應該這樣做$(‘#ITEM_1)。是(’:可見」)
  2. 瓦ICH顯示下列之一 - 「添加」,「減少」,或該項目的既不是
  3. 的ID
  4. 順序的排序列表/項目的位置

我採取的是發送帶有上述數據的AJAX到「東西/執行」動作,並以某種方式路由它並響應傳入的AJAX。

我隱約知道一些零碎的東西應該是什麼樣子,但我很難將所有東西放在一起。真的很感謝一些幫助!

+0

請注意,在將其放置到Internet網站之前,請升級到最新的3.2.x版本,否則它將被黑客入侵。 – DGM

回答

0

所以,你需要分析你的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> 

然後你就可以將它解析爲JSON(使用jQuery):

Javascript:

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++ 
}) 

然後你打電話給控制器AJAX:

紅寶石控制器:

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 

我希望這不是太亂,它幫助。