best_in_place
送信されたデータの後処理を行うフォームがあります。それは一連の時間であり、保存する前に一貫した形式にフォーマットしています。保存後にフォームに表示される更新された値を取得するにはどうすればよいですか?
質問する
846 次
1 に答える
-1
私はこれを行うための少しハッキーな方法を見つけることができました。まず、display_as
フォームヘルパーのパラメータを、表示されている実際の属性と同じになるように設定します。
= best_in_place @post, :name, type: :input, :display_as => :name
次に、のjavascriptハンドラーを追加しますbest_in_place:success
$(document).on('best_in_place:success', function(e, data) {
$(this).data('bestInPlaceEditor').original_content = data['display_as'];
});
投稿が保存され、name
属性が更新されると、新しい値がJSONとして返されます。これはのようになります{"display_as": "updated post name"}
。このJavaScriptは、返された値を取得し、それをBIPエディターのoriginal_content
属性に設定します。BIPが入力をレンダリングするとき(投稿の名前をクリックして編集するとき)、の値original_content
が表示されます。
best_in_place2.1.0を使用してテストされています。best_in_place.jsの関連コードは次のとおりです。
if (response !== null && response.hasOwnProperty("display_as")) {
this.element.attr("data-original-content", this.element.text());
this.original_content = this.element.text();
this.element.html(response["display_as"]);
}
これthis.element
は、フィールドが編集されていないときの表示です。original_content
そのため、 (レンダリングされたときに取得されるもの)とは異なる値が設定されます。これが意図されているのか、best_in_placeのバグなのかわかりません。
于 2013-03-05T09:29:35.760 に答える