Ruby on rails 4 Rails 4-最佳位置:不可处理实体

Ruby on rails 4 Rails 4-最佳位置:不可处理实体,ruby-on-rails-4,best-in-place,Ruby On Rails 4,Best In Place,我正在使用best_in_place编辑配置文件数据库中的一个字段,该数据库由“Desive”管理。在“编辑”视图中,所有内容都可以正常更新,但在使用“最佳位置”编辑单个字段后不久,该字段将返回其原始值,并且数据库尚未更新 注意:运行bundle安装、重新启动服务器和刷新页面都不起作用 用户\u controller.rb: class UsersController < ApplicationController respond_to :html, :json ...

我正在使用best_in_place编辑配置文件数据库中的一个字段,该数据库由“Desive”管理。在“编辑”视图中,所有内容都可以正常更新,但在使用“最佳位置”编辑单个字段后不久,该字段将返回其原始值,并且数据库尚未更新

注意:运行bundle安装、重新启动服务器和刷新页面都不起作用

用户\u controller.rb:

class UsersController < ApplicationController    
respond_to :html, :json

...

    def update
    @user = User.find_by_id(params[:id])

        respond_to do |format|
        if @user.update_attributes(user_params)
            format.html { redirect_to(@user, :notice => 'Profiiile was successfully updated.') }
            format.json { head :ok }
        else
            format.html { render :action => "show" }
            format.json { render :json => @user.errors.full_messages, :status => :unprocessable_entity }
            end
        end
    end

...

private
    def user_params
        params.require(:user).permit(
            :id,
            :first,
            :last,
            :email,
            :password,
            :password_confirmation,
            :remember_me,
            :user_phone,
            :user_birthday,
            :user_gender,
            :user_street_address,
            :user_city,
            :user_state,
        )
    end
end
users/show.html.erb

<section id="header">
    <div class="row title">
        <div class="large-12 column">
            <h1><%= best_in_place @user, :first %> <%= best_in_place @user, :last %></h1>
        </div>
    </div>
</section>
服务器日志显示:

Started PUT "/users/10" for 127.0.0.1 at 2014-01-29 09:00:12 -0700
Processing by UsersController#update as JSON
Parameters: {"user"=>{"email"=>"asteel@gmail.com"},     "authenticity_token"=>"GzAlA00LQlvdPTPmKtbLcl38/TLgpJg2P0jRpuydTc8=", "id"=>"10"}
User Load (1.0ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 10 ORDER BY users.first DESC LIMIT 1
(0.3ms)  BEGIN
User Exists (0.8ms)  SELECT 1 AS one FROM "users" WHERE ("users"."email" = 'astel@gmail.com' AND "users"."id" != 10) LIMIT 1
(0.3ms)  ROLLBACK
Completed 422 Unprocessable Entity in 34ms (Views: 0.1ms | ActiveRecord: 2.4ms)
档案:

gem 'rails', '4.0.0'
gem 'uglifier', '>= 1.3.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
gem 'bootstrap-sass', '2.0.0'
gem "font-awesome-rails"
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.6'
gem 'pg'
gem 'devise'
gem "best_in_place", github: 'bernat/best_in_place', branch: "rails-4"
Application.js显示:

//= require jquery
//= require jquery_ujs
//= require jquery.purr
//= require best_in_place
//= require_tree .
提前感谢您的帮助。

尝试更换:

    format.json { head :ok }
与:

在您的控制器中,您需要阻止

respond_with_bip是一种“应该在控制器中使用的实用方法,以便使用:json格式提供javascript端期望的响应”

编辑:


嗯,可能是Desive需要一个密码来更新用户,这导致了回滚,因为它找不到密码。您可以执行以下两项操作之一:从用户模型中的designe中删除
:validable
,或将这两个验证覆盖添加到用户模型中,
验证:密码,状态:true,长度:{最小值:5,最大值:120},on::创建
验证:密码,长度:{最小值:5,最大值:120},on::更新,allow_blank:true

我不久前找到了这个解决方案,并尝试了它。我只是再试一次,没有成功。还有其他建议吗?你的用户参数是什么样子的?我已经添加了代码。应该早一点考虑添加它,谢谢您的询问!嗯,可能是Desive需要一个密码来更新用户,这导致了回滚,因为它找不到密码。您可以执行以下两项操作之一:从用户模型中的designe中删除
:validable
,或将这两个验证覆盖添加到用户模型中,
验证:密码,状态:true,长度:{最小值:5,最大值:120},on::创建
验证:密码,长度:{最小值:5,最大值:120},on::更新,允许空白:正确
就是这样!我正在验证所有操作的密码确认。太好了,谢谢你。这就是为什么我选择Rails,因为社区。如果你想把这句话作为回答,我很乐意投你一票。
//= require jquery
//= require jquery_ujs
//= require jquery.purr
//= require best_in_place
//= require_tree .
    format.json { head :ok }
    format.json { respond_with_bip(@user) }