0

私が何時間も探していたので、誰かが私を助けてくれることを願っています。

RubyonRailsを使用したインプレース編集にjeditableを使用することを計画しています。通常のテキストは問題なく実行できますが、選択オプションに問題があります。data-attributesを使用してフィールドに埋め込まれたコレクションを介して、編集可能なフィールドにデータを渡したいのですが。ページには約40または50のフィールドがあるため、編集可能なフィールドごとに1つの呼び出しを作成することはできません。

ここにいくつかのコードがあります:

$(".editable[data-type='select']").editable("/post/here", {
    id: '_action',
    height: '1.8em',
    type: "select",
    data: $(this).data("collection")
    submit: "Ok",
    submitdata : function () {
        return {
            "id": this.getAttribute("data-query"),
            "index": this.getAttribute("data-index")                
        };
    }
});

コレクションは、ヘルパーメソッドを介して生成したリンクにあります。

content_tag(:div, opt_value, class: "editable", id: options[:_action], "data-query" => query.id, "data-index" => options[:index], "data-type" => "select", "data-collection" => Hash[double_array].to_json, style: "display:inline")

これは次のようなものを生成します:

<div class="editable" data-collection="{'0':'Option 0','1':'Option 1'}" data-query="33" data-type="select" id="some_action" style="display:inline">Option 1</div>

明らかにこれは機能しません:

data: $(this).data("collection")

できるだけ目立たないようにすることで、呼び出し元の編集可能フィールド内に埋め込まれた属性にアクセスする方法はありますか?

ありがとう、オクタヴィアン

4

1 に答える 1

0

どうやらそれを実行するのは少し難しいです。

タグにデータ収集属性がある場合はそのデータを使用しようとするようにsrcを編集することになりました。それ以外の場合は、以前と同じように実行されます。

ここにいくつかのコードがあります:オリジナル

...truncated...

content : function(data, settings, original) {
  /* If it is string assume it is json. */
  if (String == data.constructor) {
    eval ('var json = ' + data);
  } else {
    /* Otherwise assume it is a hash already. */
    var json = data;
  }

...truncated...

編集されたコード:

...truncated...

content : function(data, settings, original) {
  /* If it is string assume it is json. */
  if (collection = $(original).data("collection")) {
    var json = collection;
  } else if (String == data.constructor) {
    eval ('var json = ' + data);
  } else {
    /* Otherwise assume it is a hash already. */
    var json = data;
  }

...truncated...
于 2012-10-19T13:26:09.130 に答える