2011-08-03 17 views
0

この例では、関連付けられたモデル 'コメント'のフォームを作成する方法を示します。ここで、「コメント」は「投稿」、「投稿はhas_many 'コメント」です。関連付けられたhas_manyモデルのフォームの作成

http://edgeguides.rubyonrails.org/getting_started.html#generating-a-controller

どのように私は、フォーム内のすべてのコメントを表示することを変更し、まだそれは(ここhttp://railscasts.com/episodes/17-habtm-checkboxesの例のように、フォームがPostsControllerのを呼び出した対)CommentsControllerを呼ぶかもしれませんか?

おかげ

UPDATE:写真と記事が各「has_manyの」コメント場合は、ここでhttp://railscasts.com/episodes/154-polymorphic-association示すように、コメントフォームは、CommentsControllerを呼び出す必要があり、ポリモーフィックAssocationを使用して:

を別の方法を依頼します - しかし、ある写真で複数のコメントを1つのフォームで編集している場合はどうでしょうか?この場合、フォームは依然としてCommentsControllerを呼び出すか、PhotoControllerを呼び出す方が良いでしょうか?

私はまだコメントのすべての更新を行うためにCommentsControllerを使用したい:

答えて

1

はここで更新の答えです。投稿とそのコメントを同時に編集していない限り、は同時にです。投稿のコメントを編集しているので、コメントコントローラ内のアクションにはPOSTのコメントしかありません。あなたの意見では、それぞれのコメントに対してfields_forのフォームを作成してください。

次に、のupdate_multiple(または同様の名前のもの)アクションに投稿できます。 paramsハッシュを受け取り、正しく解析するだけです。お使いのモデルで

def update_multiple 
    # I'd expect the params hash to look like: 
    # {"comments" => {"1" => {"body" => "my body"}, "comment_2" => {"body" => ""}} 
    # To keep your controllers thing, stick it into the model! 
    if Model.update_multiple params[:comments] 
    respond_to do |f| 
     #... 
    end 
    end 
end 

は(ちょうどトランザクションでそれをすべて行うことによって、それをより堅牢に、そのいずれかに障害が発生した場合、それらのどれも更新されていないまあ、それはあなた次第本当にです。):

def self.update_multiple(hash) 
    updated_all = true 
    hash.each do |key, value| 
    comment = self.find key.to_i 
    updated_all = false unless comment.update_attributes(value) 
    end 
    updated_all 
end 
+0

他の方法 - 私はCommentsControllerに作業をさせようとしています。 – 99miles

+0

CommentsControllerのアプローチについて説明できますか? – 99miles

関連する問題