Ruby on rails _操作前的哈希参数[:id]
我有一个路由,id的值是加密的,这意味着在调用操作之前必须对其进行解密,我的问题是如何获取id,对其进行解密,并使用before_操作过滤器将新id设置为路由,下面是我尝试过的 控制器:Ruby on rails _操作前的哈希参数[:id],ruby-on-rails,Ruby On Rails,我有一个路由,id的值是加密的,这意味着在调用操作之前必须对其进行解密,我的问题是如何获取id,对其进行解密,并使用before_操作过滤器将新id设置为路由,下面是我尝试过的 控制器: before_action :reverse_id, only: :public_download def reverse_id @swapped_id = params[:id] @id = ScatterSwap.reverse_hash(@swapped_id).to_i params[:
before_action :reverse_id, only: :public_download
def reverse_id
@swapped_id = params[:id]
@id = ScatterSwap.reverse_hash(@swapped_id).to_i
params[:id] = @id
end
def public_download
//do something
end
这是我的路线
get "get_score/:id/", to: "controller_name#public_download", as: :get_score
这个代码不起作用。我得到的id与我放入url的id相同,而不是解密后的值
幸运的是,您根本不需要变异参数。为什么不干脆用
MyModel.find(decrypt(params[:id]))替换MyModel.find(decrypt(params[:id])
?(其中decrypt
method只做这一点,decryption)它不起作用吗?不,它不起作用,我得到的是我放在url中的相同id,而不是解密后的值有趣,但并不奇怪。幸运的是,您根本不需要变异参数。为什么不干脆用MyModel.find(decrypt(params[:id]))替换MyModel.find(decrypt(params[:id])
?(decrypt方法仅此而已,decryption)谢谢。你的建议奏效了!