0

私の Rails アプリでは、自分のサウンドを評価するための評価を作成します。評価では、ユーザーは、この評価を付けた理由などの情報を追加できます。

私の評価はうまくいきますが、情報の編集入力に best_in_place を追加したいと思います。

だから私の見解では #サウンドショー

 <%= best_in_place @rating, :info, :type => :textarea, :nil => "Ajouter un commmentaire à votre vote !" %>

そして私のコントローラーで:評価:

 def create
      @sound = Sound.find_by_id(params[:sound_id])
                @rating = Rating.new(params[:rating])
                @rating.sound_id = @sound.id
                @rating.user_id = current_user.id
                if @rating.save
                    respond_to do |format|
                        format.html
                        format.js
                    end
                end
        end

        def update
            @sound = Sound.find_by_id(params[:sound_id])
                @rating = current_user.ratings.find_by_sound_id(@sound.id)
                @rating.sound_id = @sound.id
                if @rating.update_attributes(params[:rating])
                    respond_to do |format|
                        format.html
                        format.js
                    end
                end

        end

しかし、「info」を best_in_place で編集したい場合、次の間違いがあります。

nil の id と呼ばれますが、これは誤って 4 になります -- 本当に nil の id が必要な場合は、object_id を使用してください

レーンは次のとおりです。

@rating = current_user.ratings.find_by_sound_id(@sound.id)

私の問題を理解していただき、in_place_editing の作業を手伝っていただければ幸いです。

ありがとうございました

4

1 に答える 1

0

最高のインプレース gem は ajax を使用していると思うので、コントローラーにコードを追加する必要があります。ドキュメントは、gem に json に応答するためのコントローラー ヘルパーが付属していることを示しています。

 respond_to do |format|
if @rating.update_attributes(params[:rating])
  format.html { redirect_to(@sound, :notice => 'Rating was successfully updated.') }
  format.json { respond_with_bip(@rating) }
else
  format.html { render :action => "edit" }
  format.json { respond_with_bip(@rating) }
end
end

ドキュメントの任意の場所に jQuery 初期化子を追加する必要がある場合もあります。

$(document).ready(function() {
jQuery(".best_in_place").best_in_place();
});

それがうまくいくことを願っています!また、これは私の最初のスタック オーバーフローの回答です。

于 2013-10-30T02:32:33.253 に答える