Ошибка необработанного объекта при попытке использовать редактор rails best_in_place

Я пытаюсь использовать гем best_in_place в тестовом приложении, которое я запускаю. Хотя гем best_in_place устанавливается и не выдает ошибок при загрузке на страницу (т.е. при загрузке с HTML и т. Д.), Возникает проблема с нажатием клавиши ввода после изменения пользовательского параметра через поле ввода в представлении HTML. Пользовательский ввод в поле, похоже, не обновляется в моей БД.

Мой взгляд:

<%= best_in_place @user, :name %>

<%= best_in_place @user, :name, activator: "#edit_#{@user.id}", display_with: :link_to, 
 helper_options: user_path(@user) %>

<small><a href="#" id="edit_<%= @user.id %>">edit</a></small>

Мой пользовательский контроллер:

  def edit
      @user = User.find(params[:id])
  end

  def update
    @user = User.find params[:id]

    respond_to do |format|
      if @user.update_attributes(params[:user])

        format.html { redirect_to(@user, :notice => 'User was successfully updated.') }
        format.json { respond_with_bip(@user) }
      else

        format.html { render :action => "edit" }
        format.json { respond_with_bip(@user) }
      end
    end
  end

Скрипт вывода терминала при попытке запуска на сервере

Started PUT "/users/108" for 127.0.0.1 at 2013-09-24 15:26:14 +0530
Processing by UsersController#update as JSON

Parameters: {"user"=>{"name"=>"ap"}, "authenticity_token"=>"3d/ZtW3csCIqXWG5Qk1U2QjMlyTQZ5W9/tBnVNZlHY8=", "id"=>"108"}

User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."remember_token" = 'VJ-EiGLCCGtqjPhuebTbZQ' LIMIT 1

User Load (0.2ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", "108"]]

CACHE (0.0ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", "108"]]

   (0.1ms)  begin transaction

  User Exists (1.0ms)  SELECT 1 AS one FROM "users" WHERE (LOWER("users"."email") = LOWER('b@b.com') AND "users"."id" != 108) LIMIT 1

   (0.1ms)  rollback transaction
Completed 422 Unprocessable Entity in 347ms (Views: 0.4ms | ActiveRecord: 1.7ms)

В идеале я ожидаю ОБНОВИТЬ оператор SET SET "..." пользователя после транзакции начала в приведенном выше коде. Признаете ли вы, почему мой код не обновляет параметры пользователя в этом случае?

2 ответа

В файле JS .purr отображаются сообщения об ошибках проверки. Если вы используете Rails 4, включите его в файл application.js следующим образом:

//= require best_in_place

//= require best_in_place.purr

Вместо

//= require jquery.purr

как показано в видео Rails Cast: http://railscasts.com/episodes/302-in-place-editing?view=asciicast

Надеюсь, это поможет!

Я не знаю конкретно для вашего @user (который, как я полагаю, имеет некоторую аутентификацию, связанную с ним и имеет свои причуды и влияние), но я обнаружил, что validates_numericity_of в моей модели для переменной, которую я не смог проверить, препятствовал я от спасения. Как только я это закомментировал, это спасло. У меня была та же самая ошибка, что и вы заранее.

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