什么是rails中的`stringify_keys’以及如何在出现此错误时解决它

在我的应用程序的部分文件中,我有以下代码片段用于显示用户导航(通过Devise): –

 

但我得到一个错误说: –

 undefined method `stringify_keys' for "/users/sign_in":String 

现在我的问题是: –

  1. 什么是`stringify_keys’一般?
  2. 我如何在我的代码中解决这个问题???

谢谢…

1) stringify_keys是一个在哈希上调用的方法,用于将其键从符号转换为字符串。 它是由Rails添加的 – 它不是标准的Ruby方法。 这是在文档中 。

 {:a => 1, :b => 2}.stringify_keys # => {"a" => 1, "b" => 2} 

2)这意味着你的代码在某个期望散列的地方传递"/users/sign_in" 。 仔细检查显示您正在混合和匹配两种forms的link_to

 # specify link contents as an argument link_to "The text in the link", "/path/to/link", some: "options" # specify link contents in a block link_to "/path/to/link", some: "options" do "The text in the link" end 

正如您所看到的,您正在尝试两者:

 <%= link_to "Sign out", destroy_user_session_path, :method => 'delete' do %>  <% end %> 

并且Rails期望块forms中的第二个参数是选项哈希,因此它会调用stringify_keys ,这会导致您的错误。

将这些链接更改为以下内容:

 <%= link_to destroy_user_session_path, :method => 'delete' do %>  Sign out <% end %> 

根据documentat stringify_keys将尝试将所有键转换为字符串。 因此,在简单的工作中,该方法需要具有键值的东西并将其转换为字符串。

在您的情况下,很可能您的User对象可能为空或计划字符串。 这是不起作用尝试发布完整的错误日志