当前位置: 首页 > 知识库问答 >
问题:

TypeError:没有将符号隐式转换为整数

时宾实
2023-03-14

我在尝试更改哈希值时遇到了一个奇怪的问题。我有以下设置:

myHash = {
  company_name:"MyCompany", 
  street:"Mainstreet", 
  postcode:"1234", 
  city:"MyCity", 
  free_seats:"3"
}

def cleanup string
  string.titleize
end

def format
  output = Hash.new
  myHash.each do |item|
    item[:company_name] = cleanup(item[:company_name])
    item[:street] = cleanup(item[:street])
    output << item
  end
end

当我执行此代码时,我得到:“TypeError:没有将符号隐式转换为整数”,尽管 item[:company_name] 的输出是预期的字符串。我做错了什么?

共有3个答案

艾修筠
2023-03-14

你可能是这个意思:

require 'active_support/core_ext' # for titleize

myHash = {company_name:"MyCompany", street:"Mainstreet", postcode:"1234", city:"MyCity", free_seats:"3"}

def cleanup string
  string.titleize
end

def format(hash)
  output = {}
  output[:company_name] = cleanup(hash[:company_name])
  output[:street] = cleanup(hash[:street])
  output
end

format(myHash) # => {:company_name=>"My Company", :street=>"Mainstreet"}

请阅读关于Hash#each的文档

慕俊语
2023-03-14

数组或字符串视为哈希时,会显示此错误。在这一行中,myHash。每个do|item |都将<code>item[key,value],因此<code>项[:symbol]将引发一个错误。

乜烨霖
2023-03-14

您的< code>item变量包含< code>Array实例(以< code>[hash_key,hash_value]格式),因此它不需要< code>[]方法中的< code>Symbol。

这就是使用<code>散列#each</code>的方法:

def format(hash)
  output = Hash.new
  hash.each do |key, value|
    output[key] = cleanup(value)
  end
  output
end

否则:

def format(hash)
  output = hash.dup
  output[:company_name] = cleanup(output[:company_name])
  output[:street] = cleanup(output[:street])
  output
end
 类似资料:
  • 我正在尝试将文件导入Excel,但是当我尝试使用相关数据创建记录时,它会向我显示以下错误: 在此行中: 这是我用来导入的列表控制器和方法: 我的方法导入到列表控制器中: 这是我的“deta”控制器:

  • 搞砸 使用的代码 我无法获得以下输出: 错误信息: 类型错误没有将符号隐式转换为整数 在多条记录的情况下,它可以正常工作 使用的代码

  • 我试图创建AWS安全组,但我得到的错误在 我在遵循这个文档。知道如何解决这个错误吗? 错误:

  • 尝试将 URL 中包含的参数转换为整数,以便在控制器中对其进行操作 - URL 的格式类似于 http://localhost:3000/charges?data=149 charges_controller.rb 如下所示: 我在better_errors屏幕中看到的参数已经检测到“数据”量: 在live shell中,如果我执行params[: data],则会出现更好的错误。to_i它返回1

  • 我尝试使用改造2发布到rails来过滤来自params[: filter]的一些数据是: 所以我想用一个简单的参数[:filter][:id]获取id,但它,感谢您的帮助,如果它看起来是一个简单的问题,很抱歉

  • 当创建新的学生时,Im得到错误“没有符号到整数的隐式转换” 在控制器中, 是什么导致了这个问题?