【问题标题】:What may be preventing in-place editing in my rails 4 app?是什么阻止了我的 rails 4 应用程序中的就地编辑?
【发布时间】:2013-11-21 22:27:00
【问题描述】:

我有一个 rails 4 应用程序,我想在其中使用 Best in Place 或 Rest in Place 或任何 gem 来提供就地编辑。

我试过这两个。使用这两种方法,我将用户的“名称”属性设置为可编辑。

当我访问用户的显示页面时,我单击名称并出现输入字段。但提交后,不会更新记录。

日志:

Processing by UsersController#update as JSON
  Parameters: {"user"=>{"name"=>"lkj"}, "authenticity_token"=>"TOz1cbnLc5KrX5JLZl0hiOsf7ZvwXhp6lD2qUIfH+og=", "id"=>"7"}
  User Load (0.1ms)  SELECT "users".* FROM "users" WHERE "users"."remember_token" = '62f0af062cc8544a31bfe5a02ef00bf34d449959' LIMIT 1
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", "7"]]
   (0.1ms)  begin transaction
  User Exists (0.2ms)  SELECT 1 AS one FROM "users" WHERE (LOWER("users"."email") = LOWER('juan@juan.com') AND "users"."id" != 7) LIMIT 1
   (0.1ms)  rollback transaction
Completed 500 Internal Server Error in 41ms

会不会是正在发送的消息是 PUT 而不是 PATCH?

我在用户控制器中的更新操作:

def update
    if @user.update_attributes(user_params)
      flash[:success] = "Perfil actualizado"
      sign_in @user
      redirect_to @user
    else
      render 'edit'
    end
end

任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • 你的路由文件是什么?

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


【解决方案1】:

如果你改变了

if @user.update_attributes(user_params)

到以下:

if @user.update_attributes!(user_params)

您将收到更详细的错误消息。

如果这不起作用,请尝试 Rails.logger.debug(user_params) 在日志中查看您的参数哈希。

总结:

def update
    if @user.update_attributes!(user_params)
      flash[:success] = "Perfil actualizado"
      sign_in @user
      redirect_to @user
    else
      render 'edit'
    end
end

进行相应的调试!

【讨论】:

  • 感谢 jquadrin,有了更详细的错误消息,我刚刚意识到 user_params 还发送了一个未通过验证的空值“密码”参数。谢谢和问候。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多