Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未定义的方法'id';至于#&书信电报;用户:0x00007fe6d52c9c50>&引用;:rubyonrails中的字符串_Ruby On Rails_Ruby_Html - Fatal编程技术网

Ruby on rails 未定义的方法'id';至于#&书信电报;用户:0x00007fe6d52c9c50>&引用;:rubyonrails中的字符串

Ruby on rails 未定义的方法'id';至于#&书信电报;用户:0x00007fe6d52c9c50>&引用;:rubyonrails中的字符串,ruby-on-rails,ruby,html,Ruby On Rails,Ruby,Html,我在html中做了一个按钮,当你按下它时,会将当前用户发送给控制器,因此之后我想在控制器中与该用户一起工作,但当我尝试访问对象用户的atribute时,出现了一个问题,即我的对象用户是一个字符串,我真的不知道如何再次将其转换为对象,这是我的代码和错误: 错误: NoMethodError in ArticlesController#show undefined method `id' for "#<User:0x00007fe6d52c9c50>":String Extracted

我在html中做了一个按钮,当你按下它时,会将当前用户发送给控制器,因此之后我想在控制器中与该用户一起工作,但当我尝试访问对象用户的atribute时,出现了一个问题,即我的对象用户是一个字符串,我真的不知道如何再次将其转换为对象,这是我的代码和错误:

错误:

NoMethodError in ArticlesController#show
undefined method `id' for "#<User:0x00007fe6d52c9c50>":String
Extracted source (around line #66):

puts params[:petition]  user = params[:petition]    puts user.id    # user = User.find(params[:petition])   # puts datos.email  # $list_of_petition.push(user)

我知道有一种方法可以替换
当前用户
当前用户.id
和控制器make
user=user.find(params[:呈请])之后的
当前用户

在你的代码
user=params[:呈请]
中意味着为
用户
变量分配一个字符串

您不能通过
参数传递
当前用户
。相反,您应该传递
当前_user.id
,并在控制器中执行以下操作:

user = User.find params[:id]

请始终记住
params
ActionController::Parameters
的一个实例,其行为类似于
散列
对象,当您尝试传递
当前用户
params
中的任何其他
记录
时,实际上您只传递了一个字符串。因此,始终在代码中传递
params

中的记录id
user=params[:呈请]
意味着为
user
变量分配一个字符串

您不能通过
参数传递
当前用户
。相反,您应该传递
当前_user.id
,并在控制器中执行以下操作:

user = User.find params[:id]

请始终记住
params
ActionController::Parameters
的一个实例,其行为类似于
散列
对象,当您尝试传递
当前用户
params
中的任何其他
记录
时,实际上您只传递了一个字符串。因此,始终在
参数中传递记录id

您应该真正使用表单帮助器。并且,您应该使用
隐藏字段标记将
当前用户.id
作为隐藏值传递。您不会以您正在尝试的方式封送ActiveRecord实例。你可能想,但这不是它的工作方式。你真的应该使用表单助手。并且,您应该使用
隐藏字段标记将
当前用户.id
作为隐藏值传递。您不会以您正在尝试的方式封送ActiveRecord实例。你可能想,但这不是它的工作方式。回答得好。只是想挑刺一下,
params
实际上是
ActionController::Parameters
的一个实例,它类似于散列,但不是一个
hash
@jvillian感谢您的更正!更新了答案。这意味着没有办法像对象和字符串一样将当前用户传递给控制器?@mrpepo877你不能这样做。仅仅传递id有什么问题吗?我只是想知道,我认为以这种方式传递信息可能是不安全的:)回答得好。只是想挑刺一下,
params
实际上是
ActionController::Parameters
的一个实例,它类似于散列,但不是一个
hash
@jvillian感谢您的更正!更新了答案。这意味着没有办法像对象和字符串一样将当前用户传递给控制器?@mrpepo877你不能这样做。仅仅传递id有什么问题?我想知道,以这种方式传递信息可能不安全:)
user = User.find params[:id]