Rails / Ruby:获取最后4位信用卡

时间:2015-12-03 07:09:43

标签: ruby-on-rails ruby

我知道我已经看到了一些类似的问题,但没有一个解决方案适合我。

我正在向信用卡控制器发送一个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

如果有人能解决这个问题,我会非常感激。

2 个答案:

答案 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