私は '投稿'ビューのコメントセクションを作成しました。フォームには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
あなたが解決策を得たのですか? – uzaif
まだもう少し近いです。サーバー側で何もしていないので、作成したコメントを使ってAjaxリクエストに応答する方法を理解する必要があるかもしれません。このページは現在までに役立ちますhttp://guides.rubyonrails.org/working_with_javascript_in_rails.html –
あなたのネットワークタブを見てください – uzaif