我正在尝试在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
你们知道我做错了吗?
答案 0 :(得分:4)
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}