Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 用其他内容替换资源用户id_Ruby On Rails_Ruby On Rails 4_Devise - Fatal编程技术网

Ruby on rails 用其他内容替换资源用户id

Ruby on rails 用其他内容替换资源用户id,ruby-on-rails,ruby-on-rails-4,devise,Ruby On Rails,Ruby On Rails 4,Devise,我想使用类似于domain.com/users/foo的东西,而不是像/users/user\u id/ 很公平,您可以执行get”/users/:name/…但我使用的是嵌套资源: devise_for :users, :controllers => { omniauth_callbacks: 'omniauth_callbacks' } resources :users do resource :profile resources :supports do

我想使用类似于
domain.com/users/foo
的东西,而不是像
/users/user\u id/

很公平,您可以执行
get”/users/:name/…
但我使用的是嵌套资源:

  devise_for :users, :controllers => { omniauth_callbacks: 'omniauth_callbacks' }

  resources :users do
    resource :profile
    resources :supports do
      post :interest
    end
  end
是否有办法将资源
users/user\u id
更改为
users/firstname

为此,您可以在用户模型中使用或定义
to\u param
方法

def to_param
  "#{name}"
end

虽然这样做有效,但有没有办法改变路由。rb?@Sylar如果你使用
来设置参数
确保每个名称都是唯一的。
友好的id
gem是一个不错的选择(它会生成唯一的slug).Upvoted。我使用的是twitter身份验证,所以他们的用户名是唯一的。@Sylar那么你就可以走了。而且,直接在模型中处理这个问题比在路由定义中处理要好得多。你为什么要这样做?因为我用
twitter用户名
替换
用户id
,并使用
用户查找(参数[:twitter_用户名]