自定义嵌套路由

时间:2011-12-29 20:49:42

标签: ruby-on-rails ruby-on-rails-3

我正在尝试根据用户名而不是ID来获取自定义路由。我已经努力到达用户的显示页面,但我也试图嵌套资源,以便我可以使用相同的语法查看他的帖子和评论。

示例:

作品...... “mysite.com/users/username /”

不起作用...... “mysite.com/users/username/posts /”

的routes.rb

...
# Users with the Username...
match 'users/:username' => "users#show" do
    get :posts
    get :comments
end

# Users with the ID...
resources :users do
    get :posts
    get :comments
end
...

1 个答案:

答案 0 :(得分:1)

也许您可以使用to_param方法并更新嵌套路由/资源:

routes.rb中:

resources :users do
    resources :posts
    resources :comments
end

user.rb

class User < ActiveRecord::Base
  def to_param
   username
  end
end

..用于UserController中的查找:

 @user = User.find_by_username(params[:id])

(或根据用户名标准查找的任何变体)