0

私はRails 3.2.1アプリに取り組んでおり、いくつかの Javascript 変数を Rails コントローラーに渡したいと考えています。詳細は次のとおりです。

私のjsフィドル:http://jsfiddle.net/PauWy/475/

そして、どのようなフィドルが表示されないか、jQuery UI ソート可能: $("#menu-items").sortable();

各項目の ThingsController の Rails 'execute' メソッドで次の情報を処理したいと思います。

  1. アイテムが表示されているかどうか ($('#item_1).is(':visible') のようにする必要があると思います)
  2. 次のうちどれが表示されるか - 「追加」、「削減」、またはどちらも表示されない
  3. アイテムのID
  4. ソート可能なリスト内のアイテムの順序/位置

私の考えでは、上記のデータを含む AJAX を 'things/execute' アクションに送信し、何らかの方法でそれをルーティングして、着信 AJAX に response_to することです。

部分的な部分がどのように見えるかは漠然と知っていますが、すべてをまとめるのに苦労しています. 助けていただければ幸いです。

4

1 に答える 1

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>

次に、(jQuery を使用して) JSON に解析できます。

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 で呼び出します。

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

ルビーコントローラー:

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

面倒すぎず、役に立てば幸いです。

于 2013-07-18T19:51:41.367 に答える