Rails helper用于编码输入值

时间:2013-01-14 21:55:21

标签: ruby-on-rails encryption input helper

是否有可能将输入值加密到某些加密,如下所示:

http://dzone.com/snippets/quick-two-encryption

但是在视野中这样做,所以视图没有太多逻辑,也许做帮助?但是如何?

例如更改此类字符串

<input name="person" value="1" />

<input name="c4ca4238a0b923820dcc509a6f75849b" value="1" />

那么,如何在rails中编码输入名称?

另外请不要问我为什么需要这样做...有答案吗?给它......

2 个答案:

答案 0 :(得分:1)

尝试生成帮助器,然后放在那里

module EncryptorHelper
    def encrypt_string(name)
    secret = Digest::SHA1.hexdigest(name)
        a = ActiveSupport::MessageEncryptor.new(secret)
        b = a.encrypt("parts")
        b
  end
end

然后你可以在你的输入中调用ecnrypt_string(123)

答案 1 :(得分:0)

干净的想法。这根本没有经过测试,但你会明白这一点。难道你不能使用method_missing传递一个加密的字符串来找出真正的方法名称吗?有那个处理getter和setter。有点像...

form.html.haml

# You'll need to create an encrypt helper.
form_for @model do |f|
  f.input encrypt(person)

model.rb

class Model

  def method_missing sym, *args
    secret = Digest::SHA1.hexdigest("yourpass")
    a = ActiveSupport::MessageEncryptor.new(secret)

    if sym =~ /^(\w+)=$/
      instance_variable_set "@#{a.decrypt($1)}", args[0]
    else
      instance_variable_get "@#{a.decrypt(sym)}"
    end
  end

end