【问题标题】:Resolve Fixnum error [closed]解决 Fixnum 错误 [关闭]
【发布时间】:2016-05-13 12:35:00
【问题描述】:

我有一个来自 URL 的参数 (params[:authorization]),如您所见:

authorization_selected = params[:authorization]
new_parcel = params[:new_parcel].to_i

puts authorization_selected.class (in the console show type String)
puts new_parcel.class (in the console show type Fixnum)

在我的控制器中,有:

@portability = Portability.new
@portability.employee_id = authorization_selected.employee_id

但是这会返回错误:

undefined method `employee_id' for 3:Fixnum

我需要两者都是整数。怎么做?

【问题讨论】:

  • 您的代码示例和错误消息不匹配。授权是一个字符串,但错误消息说它是一个 Fixnum。
  • 请发布完整代码,而不是示例。您所放的内容应该会给出不同的错误,因为authorization_selected 是一个字符串。根据您的第一段代码,不是固定编号。你的意思是@portability.employee_id = new_parcel
  • 不,@ portabilitity.employee_id = @authorization.employee_id(但不工作)。而new_parcel是一个输入值

标签: ruby-on-rails ruby ruby-on-rails-4 fixnum


【解决方案1】:

您在authorization_selected 上调用employee_id 方法,它是一个字符串并且不提供此方法。 显然这是行不通的。你可能想这样做

@portability = Portability.new
@portability.employee_id = authorization_selected

假设 params[:employee] 包含 employee_id 并且 Portability 是 ActiveModel 或 ActiveRecord。

也许你可以改变你的表单,让值可以通过初始化器赋值?

【讨论】:

  • 介意将复制粘贴的= authorization_selected 更改为[可能] 正确提及的= params[:employee]? :)
  • 为什么否定我?我失去了超过六分,因为:(
  • 授权属于员工,可移植性属于授权和员工
  • 如果您发布格式不正确的问题,人们会否决您。你的这个问题没有很好的形成。阅读:stackoverflow.com/help/how-to-ask(或葡萄牙语版本,如果您愿意:pt.stackoverflow.com/help/how-to-ask)。
猜你喜欢
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-19
  • 2015-03-23
  • 2014-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多