Идентификатор ошибки best_in_place для nil

В моем приложении 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, у меня есть эта ошибка:

Вызывается id для nil, который по ошибке будет равен 4 - если вы действительно хотите id nil, используйте object_id

И переулок это:

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

Я надеюсь, что вы понимаете мою проблему, и вы можете помочь мне в работе in_place_editing.

Спасибо

1 ответ

Я думаю, что лучший в своем роде гем использует ajax, поэтому вам нужно добавить код в свой контроллер. Документы показывают, что гем поставляется с помощником контроллера для ответа на 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();
});

Надеюсь, что это работает! Кроме того, это мой первый ответ о переполнении стека!

Другие вопросы по тегам