0

これは私のroutes.rbファイルにあります:

  resources :users, :only => [:create] do
    get 'search'
    member do
      get 'images'
      get 'followers'
      get 'following'

      post 'follow'
      delete 'follow'
    end
  end

しかし、誰かが /self/feed と /self/comments (ここでコメントはリソースです) を呼び出し、self がセッションの ID を参照できるようにしたいと考えています。自分を繰り返さずにどうすればそれを行うことができますか?

ありがとう

4

1 に答える 1

0

ID が既にセッションにある場合は、それを URL 引数として渡す必要はありません。セッション ID を渡すことの危険性を考慮してください。セッション IDではない IDが渡された場合はどうなりますか? それをどのように処理しますか?

コメント ルートについては、次のようなものを検討する必要があります。

# config/routes.rb
resources :comments

次に、コメント コントローラーで、id is session のすべてのコメントをクエリします。

# app/controllers/comments_controller.rb
def index
    @comments = User.find(session[:id]).comments // assuming that the session `id` variable is the identifier for a `User` model
end

したがって、セッションのコメントにアクセスするために必要なことは、/commentsパスにアクセスすることだけです。

編集:

エイリアスパスを介してセッションのユーザー コメントにアクセスするには/self/comments、名前付きマッチ ルートを作成します。

# config/routes.rb    
match 'self/comments' => 'user#self_comments'

comments_controller.rb次に、 for にアクションを追加しますself_comments。おそらく、コメントindex.html.erbテンプレートを再利用して結果を表示できます。

# app/controllers/comments_controller.rb
def self_comments
    @comments = User.find(session[:id]).comments
    render :template => 'comments/index'
end
于 2013-06-15T22:19:21.967 に答える