Ruby on rails 未定义的方法'id';至于#&书信电报;用户:0x00007fe6d52c9c50>&引用;:rubyonrails中的字符串
我在html中做了一个按钮,当你按下它时,会将当前用户发送给控制器,因此之后我想在控制器中与该用户一起工作,但当我尝试访问对象用户的atribute时,出现了一个问题,即我的对象用户是一个字符串,我真的不知道如何再次将其转换为对象,这是我的代码和错误: 错误: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
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
和控制器makeuser=user.find(params[:呈请])之后的当前用户。在你的代码user=params[:呈请]
中意味着为用户变量分配一个字符串
您不能通过参数传递当前用户
。相反,您应该传递当前_user.id
,并在控制器中执行以下操作:
user = User.find params[:id]
请始终记住params
是ActionController::Parameters
的一个实例,其行为类似于散列
对象,当您尝试传递当前用户
或params
中的任何其他记录
时,实际上您只传递了一个字符串。因此,始终在代码中传递params
中的记录iduser=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]