Ruby on rails 3 处理一个控制器和多个入口点的最佳实践是什么?

Ruby on rails 3 处理一个控制器和多个入口点的最佳实践是什么?,ruby-on-rails-3,Ruby On Rails 3,用户来到我的应用程序输入他们拥有的卡片。卡片按发行顺序组织,以便 发行有许多卡片 所以我们的基本情况(1)是当用户登录并更新他的收藏时,他访问 /issues/{id} 点击issues#show呈现issues\show.haml。在此页面上,他们输入卡片或从收藏中移除卡片。该页面有各种排序和按钮等 我想公开用户集合(2),以便其他人可以访问 /{username}/issues/{id} 这个页面的内容会少很多,并且会显示与登录用户相关的其他信息,而不是卡的所有者。显而易见的选择是将:iss

用户来到我的应用程序输入他们拥有的卡片。卡片按发行顺序组织,以便

发行有许多卡片

所以我们的基本情况(1)是当用户登录并更新他的收藏时,他访问

/issues/{id}

点击
issues#show
呈现
issues\show.haml
。在此页面上,他们输入卡片或从收藏中移除卡片。该页面有各种排序和按钮等

我想公开用户集合(2),以便其他人可以访问

/{username}/issues/{id}

这个页面的内容会少很多,并且会显示与登录用户相关的其他信息,而不是卡的所有者。显而易见的选择是将
:issues
嵌套在
:users
下,并让
issuecontroller#show
处理所有事情。但是
issuecontroller#show
已经在处理上述第一个案例

一个实现是:

class IssuesController
    def show
         if(params[:user_id])
              #do something
         elsif
              #do and render something else
         end
    end
end
…但这看起来很可怕。此外,这是一个我们将在应用程序中使用的概念,我不想像那样污染所有的控制器


处理这种情况的最佳做法是什么?

首先,应该由
IssuesController\show
而不是
\index
处理

您可以选择将
/:user_id/issues/:id
路由到您喜欢的任何控制器和操作。这不一定有一个最佳实践,所以选择一些你满意的东西。我会将它发送到类似于
issuecontroller#show_for_user
的程序中,这样就很好、很清晰了