Drawing routes using user name in Rails 3 w/ devise

前端 未结 2 634
一生所求
一生所求 2020-12-17 05:23

Given a one to many relationship between a user managed with devise and a \"thing\", my goal is to draw restful routes like:

http://host/username
http://host         


        
相关标签:
2条回答
  • 2020-12-17 05:35

    You can use scope for this:

    scope ":username", :as => "user" do
      resources :things
    end
    

    Combine this with to_param on the user model:

    def to_param
      username
    end
    

    And you'll have routes such as /username/things. Be careful though, the username shouldn't contain any dots, forward slashes or standard URI characters. You may want to chuck a parameterize on the end of username to make sure.

    0 讨论(0)
  • 2020-12-17 05:46

    You can also use resource :user, path: ':id' do ... end

    Also don't forget to define to_param in your user modal & use User.find_by_username(params[:id]) in your controller.

    0 讨论(0)
提交回复
热议问题