私には、答えや解決策が見つからないように見えるアイデアと問題があります。後で必要な場合や役立つ場合の情報:
- Rails バージョン 3.2.9
- best_in_place (git://github.com/straydogstudio/best_in_place.git)
- ルビー 1.9.3p327
わかりましたので、best_in_place gem を使用して編集することで個々の設定を更新できる設定ページがあります。正常に動作します。それで幸せです。
いくつかの設定は相互に関連しています。つまり、合計または減算する必要があります。ユーザーにとって役立つヒントとして、私の見解では、その設定のインプレース フォームのすぐ横に、計算された値もあります。
もちろん、この値が属性自体とともに更新されることを確認したいと思います。私はそれを行う方法を見つけることができません。
:data => でそれを行うと動作しますが、新しい値ではなく古い値を取得するため、ビューは常に「1 ステップ遅れ」ます。
update.js.erb と _test.html.erb の部分も試しましたが、javascript ファイルが機能しません。存在しないに等しい。どこに置くかを二重、三重にチェックしましたが、問題ありません (app/views/controller/_partial.html.erb)
そう。非常に簡単な質問は次のとおりです。更新された値にアクセスし、それをビューに戻して計算を更新する方法を教えてください。個人的には、部分ファイルと js ファイルを使用する必要があると思いますが、JS ファイルが選択されない理由がわかりません。それについて何か考えはありますか?
他のオプションがある場合は、ヒントをいただければ幸いです。
ありがとう!
--EDIT(コード追加)
見る:
<td>
<%= best_in_place @s,:pay_after_bonus, :display_with => :number_to_percentage, :type => :input, :nil => "Klikni tu za spremembo!", :cancel_button=> "Prekliči" %>
Cena: <span id="test"><%= number_to_currency(@s.family_member_price - ((@s.pay_after_bonus * @s.family_member_price)/100)) %></span>
</td>
settings_controller.rb:
def update
@s = Setting.find(params[:id])
respond_to do |format|
@s.update_attributes params[:setting]
@s.create_activity :update, :params => { :setting => params[:setting].keys.first }, owner: current_user
format.json { respond_with_bip(@s) }
format.js
end
end
update.js.erb:
$( "#test" ).html( "<%= escape_javascript( render( :partial => "update") ) %>" );
_update.html.erb:
<strong>Test</strong>
-- 編集 2:
OK、どうやら私がこのようにしたいようなことをすることは可能です:
$('.best_in_place[data-attribute="model_attribute"]').bind(
"ajax:success", function(event, data) {
// function that will update whatever
});
と組み合わせて
// respond to json request with
render :json => {"model" => @model}
&
"ajax:success", function(event, data) {
var result = $.parseJSON(data);
// from here the result var will be accessible with all the data returned by the controller.
// result.model is your object - use result.model.attribute to get specific values...
}
しかし、ここで私にとっては終わりです。私の場合、 render :json => {"model" => @model} の使用方法がわかりません。これは、format.json { Respond_with_bip(@s) } と組み合わせて行う必要があるためです。
コントローラーのどこにレンダリングを配置しますか? 現在、応答としてこれを実行しようとすると、500 の内部サーバー エラーが発生します。
私はここでこの解決策を見つけました。
ありがとう!!