使用API​​调用更新RoR中的对象

时间:2016-05-11 15:45:15

标签: ruby-on-rails ruby json

我正在尝试在rails应用程序上配置我的ruby,以便我可以使用来自Angular应用程序的http Patch调用来更新值。目前我有以下方法可以使用它:

users_controller.rb

  Dim R_count As Integer

  R_count = Range("C" & Rows.Count).End(xlUp).Row

但是,当我传递一些简单的JSON时,我收到以下错误:

  

未定义的方法`permit' for" 500":String

传递JSON:

variable R_count

你们知道我做错了吗?

3 个答案:

答案 0 :(得分:4)

我相信你误解了requirepermit的目的。

require通常与Hash和表单结合使用,以确保控制器接收存在的Hash并包含一些预期的属性。请注意,require将提升或提取与所需键关联的值,并返回该值。

permit用作过滤器,它只显式允许某些字段。返回的值是原始的params哈希,列入白名单。

在你的情况下,require根本没有任何意义,除非你传递像这样的嵌套JSON

{"user": {"email":"newadres@live.com", "id":500}}

但即使在那种情况下,它也会是

params.require(:user).permit(:email)

在您当前的场景中,正确的代码是

params.permit(:email)

答案 1 :(得分:0)

您应该更改require和permit之间的顺序,例如

params.permit(:email).require(:id)

因为permit返回整个哈希值,而require则返回特定参数

参考here

<强>更新

然而,正如其他人指出的那样,你不应该使用 require 一个属性,因为它最常用于哈希

答案 2 :(得分:0)

解决这个问题的一种方法是,遵循Rails文档的精神:

def safe_params
    params.require(:user).permit(:email)
end

并更新json:

{"user": {"email":"newadres@live.com"}, "id": 500}