有相同资源的问题,可通过两条路线访问

时间:2010-10-17 07:27:01

标签: ruby-on-rails rest rails-routing

我正在开发简单的图像共享网站来训练我的ruby-on-rails-fu。我在config/routes.rb文件中有以下资源。

resources :users do
  resources :images
end

resources :images

以下是我面临的问题 - 我应该如何实施“最新图片”和“您的图片订阅”等功能?拥有vanilla资源网址的方式就是现在的样子:

/users/N/images # ImagesController#index action for listing all images for a user
/images # ImagesController#index action for listing all possible images from all users.

在图像控制器中访问索引操作时,如何管理图像的“父”对象?在:user_id哈希中检查params是否足够简单?有没有我不知道的插件(因为我想不出这个问题的简单描述)。

1 个答案:

答案 0 :(得分:1)

我会将一个控制器分配给另一个控制器,这样你就不会混淆它们并使自己感到困惑。

resources :users do
  resources :images, :controller => user_images
end

resources :images

现在在user_images_controller中,您可以考虑通过before_filter获取用户对象(因为它取决于给定的用户:D)

UserImagesController
  before_filter :get_user

  def get_user
    @user = User.find(params[:id])
    // You could also do error checking in before_filters
  end