私にはアイデアと問題があります。答えや解決策が見つからないようです。 後で必要または有用場合、一部の情報:best_in_place - 更新された値をビューに戻す
- 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 partialで試してみましたが、javascriptファイルは動作しません。それは存在しないのと同じです。私はそれを置く場所をダブル、トリプルチェックしてOKです(app/views/controller/_partial.html.erb)
So.かなり簡単な質問があります。更新された値にアクセスして、ビューを使って計算を更新する方法を教えてください。私は個人的に私が部分ファイルと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>
- EDIT 2:
OK、どうやら私がこのようにしたいような何かをすることが可能である:
// respond to json request with
render :json => {"model" => @model}
との組み合わせで
$('.best_in_place[data-attribute="model_attribute"]').bind(
"ajax:success", function(event, data) {
// function that will update whatever
});
&
"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...
}
しかし、ここでそれは私にとって終わりです。 私は、format.json {respond_with_bip(@s)}と組み合わせて行う必要があるため、私の場合、render:json => {"model" => @model}の使い方はわかりません。
レンダリングはどこに配置しますか? 現在、これをレスポンスとして500台の内部サーバエラーが発生しています。
私はこの解決策が見つかりましたhereです。
ありがとうございます!
コード(html/jsとコントローラ)を表示する必要があります。それがなければ、我々は仮定を作ることしかできない。たぶんあなたのファイルがピックアップされていないと思うあなたのJSコードにエラーがあります。 –
OK、関連するコードを追加しました。Thx –