Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 Rails嵌套资源,为用户提供漂亮的URL_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails嵌套资源,为用户提供漂亮的URL

Ruby on rails Rails嵌套资源,为用户提供漂亮的URL,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我的应用程序的数据结构如下: 组织有用户 组织有信息 组织有网站 我通常会使用嵌套资源以RESTful方式执行此操作: resources :organizations do resources :users resources :messages resources :sites end 这给了我如下URL: /organizations/12/messages /organizations/12/sites 当管理员需要为组织创建消息时,这些冗长的URL非常适合,因为UR

我的应用程序的数据结构如下:

  • 组织有用户
  • 组织有信息
  • 组织有网站
我通常会使用嵌套资源以RESTful方式执行此操作:

resources :organizations do
  resources :users
  resources :messages
  resources :sites
end
这给了我如下URL:

/organizations/12/messages
/organizations/12/sites
当管理员需要为组织创建消息时,这些冗长的URL非常适合,因为URL包含组织ID

然而,我想向普通用户显示漂亮的URL,例如:

/messages
/sites

有没有办法将这些漂亮的URL别名为/organizations/{current_user.organization.id}/*?

您需要一种传递组织id的方法。 例如,如果您有一个属于组织的用户,并且该用户已登录, 您可以通过当前用户获取组织id,如下所示:

class MessageController < ApplicationController
 before_filter :get_organization
 # ...
private
  def get_organization
    @organization = current_user.organization
  end
end

还有其他解决方案,但这取决于您如何获取组织id。

您所说的/organizations/{current_user.organization.id}是什么意思/*?你的意思是你想让你的管理员用户看到他们有很多组织,而普通用户看不到吗?@Awea:是的-我希望管理员能够为所有组织添加消息和更改站点,因此较长的URL在这种情况下很有用。为什么你不使用不同的命名空间来拆分部分中的用户逻辑和部分中的管理员逻辑?
resources :messages
resources :organizations do
  resources :messages
end