如何解析自定义网址中的参数?
假设我有一个实现User
和to_param
方法的from_param
类,我有一个后端管理员,其中“客户”可以插入用户的网址(个人资料) )页面(例如http://localhost:3000/users/JohnDoe-123security456-123
,其中123是ID)。
是否可以生成自定义params对象或类似的东西来解析url中的id? 我的目标是重用现有的逻辑,而不是创建另一个正则表达式。
我知道我可以做一些类似的事情:"http://localhost:3000/users/JohnDoe-123security456-123/custom_action?abc=def".gsub(/^.*\/users\//, '').gsub(/\/.*$/,'')
(或者更具吸引力的东西)来获取id。
这是我尝试实现的伪代码。
class User < ActiveRecord::Base
def to_param
"#{name}-#{security-token}-#{id}"
end
def self.id_from_param(param_id)
param_id.to_s.gsub(/.*-/,'')
end
end
class AdminUserController < ActionController::Base
def search
url = params[:url]
parsed_params = some_method_that_extracts_the_params_from_url(url) # (1)
user_id = User.id_from_param(parsed_params[:id])
end
end