1

Markdown エディターは素晴らしいので、PageDown を自分の Rails アプリにフックしようとしています。

ただし、Rails はフォーム ヘルパーを介して ID を自動割り当てし、PageDown は ID "wmd-input" が textarea フィールドに割り当てられることを期待しているため、これは難しいと思います。私のモデルには、エディターとして機能させたい "body" という名前のテキスト プロパティがありますがf.text_area :body、id の textarea が生成されpost_bodyます。

したがって、私の現在のアプローチは、エディタを特定の ID に関連付けるのではなく、特定のクラス名を持つテキストエリアに関連付けるように PageDown に指示することです。ここはどうしようか迷っているところです。ここに Markdown.Editor.js へのリンクがあります。

function PanelCollection(postfix) {(244 行目) に移動します。その関数の 3 行目を次のように変更します。

this.input = doc.getElementById("wmd-input" + postfix);

this.input = doc.getElementsByClassName("wmd-input" + postfix)[0];

私はこのようなことをしたことがありません。また、自動生成されるため、Markdown.Editor.js のソースを編集することは実際にはオプションではありません。作成後に関数を変更する必要があります。これどうやってするの?

編集#1:

フォークして GitHub 上の何かに貢献するのはこれが初めてでしたが、pagedown-rails gem をフォークして変更を加え、Gemfile にリストされている gem をフォークに接続することで確実に機能するようにしました。提案をありがとう、美しく働きました。このプルリクエストで貢献しました。

4

1 に答える 1

1

これは大きなハックですが、渡された文字列が で始まる場合document.getElementById()にデリゲートをオーバーライドすることで実現できます。document.getElementsByClassName()'wmd-input'

var doc = document;
doc.__getElementByIdOrig = doc.getElementById;
doc.getElementById = function (idStr) {
    if (idStr.match(/^wmd-input/)) {
        var elt = this.getElementsByClassName(idStr)[0];
        return elt ? elt : null;
    }

    return this.__getElementByIdOrig(idStr);
};
于 2012-12-09T23:27:52.700 に答える