best的最佳错误ID为nil

时间:2013-10-29 14:47:54

标签: ruby-on-rails ruby ruby-on-rails-3 best-in-place

在我的rails应用程序中,我为我的声音创建了一个评级。在评级中,用户可以添加信息,例如为什么他给这个标记等。

我的评分效果不错,但现在我想添加best_in_place信息的编辑输入。

所以在我看来#Sound show

 <%= 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

但是当我想用best_in_place编辑“info”时,我有这个错误:

  

如果你真的想要的话,被称为nil的id,这将错误地为4   nil的id,使用object_id

车道是:

  

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

我希望你能理解我的问题,你可以帮助我完成in_place_editing的工作。

谢谢

1 个答案:

答案 0 :(得分: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();
});

希望有效!此外,这是我的第一个堆栈溢出答案!