什么是rails中的`stringify_keys’以及如何在出现此错误时解决它
在我的应用程序的部分文件中,我有以下代码片段用于显示用户导航(通过Devise): –
但我得到一个错误说: –
undefined method `stringify_keys' for "/users/sign_in":String
现在我的问题是: –
- 什么是`stringify_keys’一般?
- 我如何在我的代码中解决这个问题???
谢谢…
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对象可能为空或计划字符串。 这是不起作用尝试发布完整的错误日志
- 为什么`中间人服务’工作,但是’中间人构建’无法编译这个Sass?
- 将rubygem收集从一台机器转移到另一台机器的最佳实践
- 如何使用MongoDB Ruby Driver进行“分组”(分组)?
- 如何指定一个适用于英语以外的欧洲语言的正则表达式字符范围?
- 通过深入了解关系来获得数量
- Devise中的ArgumentError :: RegistrationsController#新错误的参数个数(2个为0..1)
- Vim:Ruby和HTML omnicomplete没有显示本地方法/变量
- 模型缺少’image_file_name’所需的attr_accessor – Ruby on Rails 4
- 使用用户输入的变量NoMethodError访问哈希密钥