0

best_in_place送信されたデータの後処理を行うフォームがあります。それは一連の時間であり、保存する前に一貫した形式にフォーマットしています。保存後にフォームに表示される更新された値を取得するにはどうすればよいですか?

4

1 に答える 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 に答える