1

ユーザーは、自分が所有するカードを入力するために私のアプリにアクセスします。カードは発行ごとに整理されています。

Issue has_many Cards

したがって、基本ケース (1) は、ユーザーがログインしてコレクションを更新しているときに、

/issues/{id}

どのヒットがissues#showrender issues\show.haml. このページでは、コレクションからカードを入力または削除します。ページにはあらゆる種類の並べ替えやボタンなどがあります...

他のユーザーがアクセスできるように、ユーザー コレクションを公開したい (2)

/{username}/issues/{id}

このページでは、カードの所有者ではなく、ログインしているユーザーに関連するその他の情報が表示されます。明らかな選択は、ネスト:issuesしてすべて:usersを処理することです。IssuesController#showしかしIssuesController#show、すでに上記の最初のケースを処理しています。

実装の 1 つは、次のことです。

class IssuesController
    def show
         if(params[:user_id])
              #do something
         elsif
              #do and render something else
         end
    end
end

...しかし、それはひどいようです。さらに、これはアプリの周りで使用する概念であり、そのようにすべてのコントローラーを汚染するのは嫌です。

この状況を処理するためのベスト プラクティスは何ですか?

4

1 に答える 1

0

最初はnot/issues/:idで処理する必要がありますIssuesController#show#index

/:user_id/issues/:id好きなコントローラーとアクションにルーティングすることを選択できます。これには必ずしもベスト プラクティスがあるとは限りません。満足できるものを選択してください。私はこれを次のようなものにルーティングするIssuesController#show_for_userので、素晴らしく明確でした。

于 2012-06-26T04:11:48.037 に答える