Rails 4.0.1 中的新记录“没有将符号显式转换为字符串”(仅限)

2024-01-08

在我升级 Rails 4 后,尝试为我的任何 ActiveRecord 类创建新记录会给出

No explicit conversion of Symbol into String

例如,这是我的 links links_params 方法

def link_params
  params.require(:link)
  .permit(:url_address, :group_id, :alt_text, :version_number, 
  :position, :content_date, :verified_date) # This is line 157
end

# line 118 is: @link = Link.new(link_params)

但我得到

TypeError (no implicit conversion of Symbol into String):
  app/controllers/links_controller.rb:157:in `link_params'
  app/controllers/links_controller.rb:118:in `create'

This error occurred while loading the following files:
link

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"0FqFTx2EjCIO+R+rm97lF15+id4b452n+dBuUNxAL9U=",
 "link"=>{"url_address"=>"http://www.google.com",
 "alt_text"=>"",
 "version_number"=>"",
 "group_id"=>"49",
 "content_date"=>"08/18/2014"},
 "commit"=>"Save"}

我不确定它是如何发生的,但看起来你的 params 对象只是一个散列......而不是一个ActionController::Parameters目的。当 params 只是一个哈希值时:

params = {"utf8"=>"✓", "authenticity_token"=>"0FqFTx2EjCIO+R+rm97lF15+id4b452n+dBuUNxAL9U=", "link"=>{"url_address"=>"http://www.google.com", "alt_text"=>"", "version_number"=>"", "group_id"=>"49", "content_date"=>"08/18/2014"}, "commit"=>"Save"}

params.require(:link)
=> TypeError: no implicit conversion of Symbol into String

params.class
=> Hash

但如果它是一个 ActionController::Parameters 对象

params2 = ActionController::Parameters.new({"utf8"=>"✓", "authenticity_token"=>"0FqFTx2EjCIO+R+rm97lF15+id4b452n+dBuUNxAL9U=", "link"=>{"url_address"=>"http://www.google.com", "alt_text"=>"", "version_number"=>"", "group_id"=>"49", "content_date"=>"08/18/2014"}, "commit"=>"Save"})

params2.require(:link)
=>{"url_address"=>"http://www.google.com", "alt_text"=>"", "version_number"=>"", "group_id"=>"49", "content_date"=>"08/18/2014"} 

params2.class
=>ActionController::Parameters

你正在做某事吗params before link_params抓住它了吗?

编辑: 根据API Docs http://apidock.com/rails/ActionController/Parameters, 强参数仅在 Rails 4.0.2 中可用。如果您使用的是早期版本,则必须坚持使用 Rails 3 attr_accessible

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 4.0.1 中的新记录“没有将符号显式转换为字符串”(仅限) 的相关文章

  • 在 ruby​​ 中卸载动态声明的类

    我有一个使用 theClass class eval 和 Object const set className theClass 定义的类 有什么办法可以删除这个类的定义吗 在测试过程中 我需要加载同一类的不同版本 Object send
  • 具有预加载功能的 ActiveRecord::Calculations 是否会进行多个数据库查询?

    我的困惑源于这个问题 https stackoverflow com q 19462024 1860929 其中 OP 的模型如下 class Quote lt ActiveRecord Base has many items def ca
  • 耙子的目的是什么?

    我知道 Rake 代表 Ruby Make 而且我知道 Make 是一个 Unix 构建实用程序 现在 我来自 Xcode 工作 将 iPhone 应用程序构建到 Ruby 所以我以前从未使用过 Make 我唯一使用 rake 的时候是在
  • Ruby 字符串上的扫描和匹配有什么区别

    我是 Ruby 新手 并且一直使用String scan搜索某个数字第一次出现的位置 返回值在嵌套数组中有点奇怪 但我只是去了 0 0 为了我想要的价值观 我确信它有它的用途 只是我还没有使用它 我刚刚发现有一个String match方法
  • Factory_girl、关联和 after_initialize 的问题

    我有一个这样定义的家庭类 class Family lt ActiveRecord Base after initialize initialize family belongs to user validates user presenc
  • 如何用form_for设置动作?

    我在现有控制器上创建了一个新页面 我在控制器上添加了 2 个操作方法 prompt user 和 process feedback 所以我通过以下方式进入该页面 redirect to controller gt users action
  • 用于输入地址的自动完成文本框是个好主意吗?

    通过传统形式输入我的地址让我发疯 为什么我必须输入我的城市 州 and邮政编码何时可以从我的邮政编码推断出我的城市和州 从下拉列表中选择您的状态是一件很痛苦的事情 通常您无法使用 Tab 键进入它 您必须使用鼠标等 替代文本 http im
  • 使用 Ruby on Rails 的多个应用程序

    单个 Ruby on Rails 安装是否可以拥有多个共享通用模型的应用程序 例如 我想要一个前端应用程序以及后端管理控制台 但两者共享相同的模型 这类似于 Symfony 在 PHP 中的工作方式 提前致谢 拥有管理面板的最简单方法是使用
  • Rails/Passenger/Node.js:ExecJS“找不到 JavaScript 运行时”

    我正在尝试使用 Node js 作为我的 Rails 应用程序的 JavaScript 运行时 我在 Ubuntu 12 0 4 上使用 Phusion Passenger 模块和 Nginx 作为我的 Web 服务器 每次我访问 Rail
  • Rails、Facebook API、Koala gem — 获取“喜欢”某个页面的用户的所有个人资料

    使用 Rails3 和 koala gem 如何检索 喜欢 FB 页面的用户的所有个人资料 例如 http facebook com DAKINE 有可能吗 作为最终结果 我需要获取一堆存储在数据库中的用户配置文件 Thanks 在 Fac
  • 安装 gem 失败并出现权限错误[重复]

    这个问题在这里已经有答案了 我昨天将 Mac 操作系统更新至 10 9 Mavericks 我当前的 Ruby 版本显示为 ruby 2 0 0p247 2013 06 27 修订版 41674 universal x86 64 darwi
  • 前面的冒号:YAML 语法

    我目前在项目中使用 Sidekiq 并且有以下 YAML 配置文件 concurrency 5 pidfile tmp pids sidekiq pid logfile log sidekiq log staging concurrency
  • 如何停止 Heroku 服务器?

    我有一个托管在 heroku 上的临时服务器 我只想将其关闭 但不想破坏该应用程序 我该怎么做 我是否有类似 heroku stop 之类的命令 例如 heroku restart 来重新启动 OR 有没有办法让服务器在超过 750 小时免
  • 如何在 Ruby on Rails 中访问控制器中的隐藏字段

    问题 如何访问隐藏字段值post id从文件view comments comment html erb并用在controllers dashboards controller rb 有 2 个控制器 仪表板和评论 并使用gem act a
  • RVM 无法通过 SSH 工作(作为一项功能)

    我刚刚在 Debian 6 服务器上安装了 RVM 一开始没有任何问题 但是 在一切设置完成后 我无法在终端中运行 RVM 我打字时收到的消息rvm use is RVM is not a function selecting rubies
  • Rails:仅当满足某些条件时如何运行 before_save?

    我有一个 before save 方法 我称之为重命名上传的图像 before save randomize file name def randomize file name extension File extname screen f
  • Rspec:测试救援

    尝试测试我的函数是否能够正确地从异常中解救 更改参数 文件名 然后重试一次 我可以让函数接收第一次尝试 但无法让它接收第二次尝试 控制器 begin video get video video id rescue matches video
  • Rails 中带有 text_field 的逗号分隔数组

    我有一些users可以有很多posts 并且每个帖子都可以有很多tags 我已经使用一个实现了拥有并属于许多帖子和标签之间的关系 创建新帖子时 用户可以使用逗号分隔的值列表对其进行标记 就像在 SO 上发布新问题时一样 如果任何标签尚不存在
  • Ruby on Rails - 复选框未保存到数据库?

    我有一个迁移 它使用布尔值并在其视图中生成一个复选框 但是 无论我单击什么 保存到数据库的值都不会受到影响 我的迁移看起来像这样 def self up create table blogposts do t t string title
  • 相当于 JavaScript 中 Ruby 的each_cons

    许多语言都曾提出过这个问题 但 javascript 却没有 Ruby 有方法Enumerable each cons https devdocs io ruby 2 5 enumerable method i each cons看起来像这

随机推荐