2017-01-07 3 views
2

Ich habe einen Kommentarbereich für meine 'Beiträge' Ansichten und ich habe remote: true arbeiten auf dem Formular, so dass, wenn Sie die Eingabe und senden ' Neues Kommentar 'Formular zur Datenbank, es aktualisiert sich im Hintergrund gut (der Kommentar ist erstellt, Seite nicht umleiten oder ändern), aber ich kann es nicht bekommen, um die Kommentare auf der Seite zu laden. Sie müssen die Seite aktualisieren, um sie zu sehen.Rails 4: Reload Seite mit Ajax nach dem Senden Remote-Formular an einen anderen Controller

Ich könnte redirect_to :back in den Kommentar-Controller nach dem Speichern tun, aber das dauert Benutzer an den Anfang der Seite, anstatt zu bleiben, um den Kommentar angezeigt zu sehen.

Ich habe versucht, render 'posts#show' nach dem Speichern des Kommentars in den Kommentar-Controller erstellen Aktion, aber das versucht, Sie an /comments/posts/:slug/ senden. Wenn es tatsächlich die Posts zeigen Aktion würde ich denke, das würde funktionieren.

Kommentare Controller:

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 

Kommentar Abschnitt Ansicht Post zeigen:

%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..." 

Beiträge/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 

Antwort

0

Ich habe diese zweite Übereinstimmungsleitung routes.rb und es wird die Seite mit dem Kommentar erfrischend jetzt: obwohl

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 

Es Ajax nicht: demo

+0

haben Sie bekam Lösung? – uzaif

+0

Noch nicht, aber ein bisschen näher. Ich mache keine Server-Seite, also muss ich vielleicht herausfinden, wie ich auf die Ajax-Anfrage mit dem erstellten Kommentar reagieren soll. Diese Seite ist soweit hilfreich http://guides.rubyonrails.org/working_with_javascript_in_rails.html –

+0

Bitte schauen Sie in Ihrem Netzwerk-Tab wird es Ihnen helfen – uzaif

Verwandte Themen