我的应用程序的数据结构如下:
我通常会使用嵌套资源来RESTful地执行此操作:
resources :organizations do
resources :users
resources :messages
resources :sites
end
其中包含以下网址:
/organizations/12/messages
/organizations/12/sites
当管理员需要为组织创建消息时,这些冗长的URL非常适合,因为URL包含组织ID。
但是,我想向普通用户展示漂亮的网址,例如:
/messages
/sites
有没有办法将这些漂亮的URL别名为/organizations/{current_user.organization.id}/*?
答案 0 :(得分:0)
您需要一种传递组织ID的方法。 例如,如果您的用户属于组织且用户已登录, 您可以通过current_user获取组织ID,如下所示:
class MessageController < ApplicationController
before_filter :get_organization
# ...
private
def get_organization
@organization = current_user.organization
end
end
并且,在您的路线中,您可以添加:
resources :messages
resources :organizations do
resources :messages
end
还有其他解决方案,但这取决于您如何获得组织ID。