2010-04-30 103 views
0

我在我的应用程序中使用Ryan Bates的'nifty authentication用户注册和登录。每个用户has_many :widgets,但我想让用户浏览其他用户的小部件。我在考虑像/username/widgets/widget_id这样的url方案会很有意义 - 它会将所有与窗口小部件相关的代码保留在同一个地方(窗口小部件控制器)。不过,我不确定如何在我的应用中使用这种类型的网址。简单的导轨路由/ url问题

现在我的代码库允许登录用户浏览他们自己的小部件,这些小部件位于/widgets/widget_id。我需要对routes.rb,我的模型类以及需要指定小部件的链接进行哪些更改?

我已经完成了Rails的工作,但是当涉及到更复杂的路由等时,我是一个新手,所以我会很感激任何反馈。感谢您的考虑!

回答

0

查看嵌套的路线。你可以内部用户巢窗口小部件,像这样:

map.resources :users do |users| 
    users.resources :widgets 
end 

这将使你的URL像这样:

/users/1/widgets # all of user 1's widgets 
/users/1/widgets/1 # one of user 1's widgets 

退房的routing guide了解更多详情。

0

最简单的方法就是使用InheritedResources插件,它可以为您处理大部分的工作。

# routes: 
map.resources :users do |user| 
    user.resources :widgets 
end 


class WidgetsController < InheritedResources::Base 
    # this will require :user_id to be passed on all requests 
    # @user will be set accordingly 
    # and widget will be searched in @user.widgets 
    belongs_to :user 
end 

# no changes required to the models