2017-01-07 6 views
2

私は '投稿'ビューのコメントセクションを作成しました。フォームにはremote: trueが働いていますので、新しいコメント 'のフォームをデータベースに追加すると、それはバックグラウンドで更新されます(コメントは作成され、ページはリダイレクトまたは変更されません)が、ページにコメントを読み込むことができません。あなたはそれらを見るためにページを更新する必要があります。Rails 4:別のコントローラにリモートフォームを送信したあと、ajaxでリロードするページ

私が保存した後、コメントコントローラでredirect_to :backを行うことができますが、それはページの一番上にユーザーを取るのではなく表示されるコメントを見るために置く滞在します。

コメントコントローラの作成アクションでコメントを保存した後にrender 'posts#show'を試しましたが、これは/comments/posts/:slug/に送信しようとしています。投稿が実際に表示された場合、これは動作すると私は思っています。

コメントコントローラ:ポストビューの表示上の

class CommentsController < ApplicationController 
    before_action :find_commentable 

    def show 
    end 

    def new 
    @comment = Comment.new 
    end 

    def create 
    @comment = @commentable.comments.new comment_params 
    @comment.author = current_user if current_user 
    @comment.save 
    end 

    private 

    def comment_params 
     params.require(:comment).permit(:body, :author_id, :post_id) 
    end 

    def find_commentable 
     @commentable = Comment.find(params[:comment_id]) if  params[:comment_id] 
     @commentable = Post.find_by_slug(params[:post_id]) if params[:post_id] 
    end 
    end 

コメントセクション:

%ul#post-comments 
    = render 'comment_feed' 

    = form_for [@post, Comment.new], remote: true do |f| 
    = f.text_field :body, class: 'js-new-comment-field', placeholder: "Write a comment..." 

記事/ show.js.erb:

$("#post-comments").html("<%= escape_javascript render("comment_feed") %>"); 

routes.rbを:

resources :posts do 
    collection do 
     match 'search' => 'posts#search', via: [:get, :post], as: :search # For ransack search 
    end 
    resources :comments 
    end 

    resources :comments do 
    resources :comments # Replies on comments 
    end 

答えて

0

私はroutes.rbをするためにこの第二の一致線を追加し、それは今、新たなコメントでページをリフレッシュしています:

resources :posts do 
    collection do 
     match 'search' => 'posts#search', via: [:get, :post], as: :search 
     match '/comments/posts/:slug' => 'posts#show', via: [:get, :post], as: :comment 
    end 
    resources :comments 
    end 

これは、しかし、AJAXないです:demo

+0

あなたが解決策を得たのですか? – uzaif

+0

まだもう少し近いです。サーバー側で何もしていないので、作成したコメントを使ってAjaxリクエストに応答する方法を理解する必要があるかもしれません。このページは現在までに役立ちますhttp://guides.rubyonrails.org/working_with_javascript_in_rails.html –

+0

あなたのネットワークタブを見てください – uzaif

関連する問題