0

Railsでは、必要な場合:

/comments

/posts/1/comments

CommentsControllerを最適に整理するにはどうすればよいですか?たとえば、ルートでインデックスアクションを共有したり、2つのコントローラーで動作させたりしますか?

4

3 に答える 3

5

1つのコントローラーのみで作業できます。

パラメータが存在before_filterするかどうかを確認するためにaを使用します。post_id

class CommentsController < ApplicationController
  before_filter :find_post, only: [:index]

  def index
    if @post.present?
      ## Some stuff
    else
      ## Other stuff
    end
  end

  private

    def find_post
      @post = Post.find(params[:post_id]) unless params[:post_id].nil?
    end
end

そしてあなたのルートに(あなたの選択の制約で)持っている:

resources :posts do
  resources :comments
end
resources :comments
于 2013-02-12T09:41:16.927 に答える
1

私はあなたが行動の/commentsためだけに欲しいshowと思いますよね?indexそうしpostないと、を作成または更新するときにパラメータが失われcommentます。

あなたの中にroutes.rbあなたは次のようなものを持つことができます:

resources : posts do
  resources :comments
end
resources :comments, :only => [:index, :show]

あなたのフォームで:

form_for([@post, @comment]) do |f| 

また、コントローラーで、 (、、、および、のように、postを処理する前に必ず見つけてください。commentsneweditcreateupdate

@post = Post.find(params[:post_id])
@comment = @post...
于 2013-02-12T09:35:12.370 に答える
0

Railsルートでやりたいことはほとんど何でもできます。

ルート.rb

match 'posts/:id/comments', :controller => 'posts', :action => 'comments'}

resources :posts do

   member do
    get "comments"
   end
 end
于 2013-02-12T09:43:14.720 に答える