我知道我已经看到了一些类似的问题,但没有一个解决方案适合我。
我正在向信用卡控制器发送一个16位数字,但我只想要最后四个。我一直在尝试[-4 ..- 1]到[14-16]的每个版本到最后(4),我仍然得到相同的错误:数字太多。这是我现在的代码行(:last_4被发送到16位数的控制器):
credit_card_params[:last_4 => credit_card_params[:last_4].last(4)]
该字段是整数字段。以下是输入示例:
1234567890987654
这应该产生这个:
7654
我做错了什么?
更新:
我非常感谢您的所有回复。事实证明,这实际上是一个字符串。无论如何,我一直在把头发拉出来。仍然不起作用!这是我的代码,我的控制器仍在抱怨有太多的字符:
ccNum=credit_card_params[:last_4]
ccNum = ccNum[-4..-1]
credit_card_params[:last_4 => ccNum]
@credit_card = CreditCard.new(credit_card_params)
respond_to do |format|
if @credit_card.save #HERE IS THE ERROR!
这是表格中的代码:
<%= f.label :last_4, "Credit Card Number" %><br>
<%= f.number_field :last_4 %>
保持字符串1234123412341235不变,并显示以下错误消息:
1234123412341235超出ActiveRecord :: Type :: Integer的范围,限制为4
如果有人能解决这个问题,我会非常感激。
答案 0 :(得分:3)
考虑一下:
cc = cc.to_s[-4..-1].to_i
或只是一行
res.locals.hide_it = true;
console.log(res.locals.hide_it) // working, returned true
答案 1 :(得分:1)
试试这个:
cc = 1111222233334444 # 16 digits in int
cc = cc.to_s # as a string now
cc = cc[-4..-1] # as a string "4444"
cc = cc.to_i #now as a int 4444