如何从控制器内的给定URL解析自定义参数?

时间:2013-12-06 10:58:03

标签: ruby-on-rails ruby params

如何解析自定义网址中的参数?

假设我有一个实现Userto_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

0 个答案:

没有答案