неопределенный метод comment_url для # - PullRequest
0 голосов
/ 10 января 2020

Я следую учебному пособию на YouTube и пытаюсь оставлять комментарии к сообщениям без ссылки на страницу sh. У меня есть эта настройка в. js файле. Но в перенаправлении маршрута я получил эту ошибку - CommentsController

class CommentsController < ApplicationController
 def create
   @article = Article.find(params[:article_id])
   @comment = @article.comments.create(params[:comment].permit(:name, :body))
   @comment.name = current_user.email
   respond_to do |format|
     if @comment.save
       format.js 
       format.html { redirect_to @comment }
       format.json { render :show, status: :created, location: @comment }
     else
     end
   end
 end

 def destroy
   @article = Article.find(params[:article_id])
   @comment = @article.comments.find(params[:id])
   @comment.destroy
   redirect_to article_path(@article)
 end
end

rout.rb

 Rails.application.routes.draw do

   get 'search/index'

   devise_for :users
   get 'welcome/index'
   get '/search', to: 'search#search'

   resources :user
   resources :articles do
     resources :comments
     member do
       put "like" => "articles#like"
       put "unlike" => "articles#unlike"
      end
    end
   resources :search, only: [:index]

   root 'welcome#index'
  # For details on the DSL available within this file, see http://guides.rubyonrails.org             /routing.html
 end

Ошибка -

     NoMethodError (undefined method `comment_url' for                                                           #<CommentsController:0x00007fb775ff20d8>):

     app/controllers/comments_controller.rb:10:in `block (2 levels) in create'
     app/controllers/comments_controller.rb:7:in `create'

create. js .erb file

   $('#forma2 table').append("<%= j render @comment %>")

Ответы [ 2 ]

0 голосов
/ 10 января 2020

У вас есть вложенные маршруты: пользователи> комментарии, поэтому вы не можете redirect_to @comment таким образом.

Для создания вашей операции потребуется что-то вроде:

if @comment.save
  format.js 
  format.html { redirect_to user_comments_path(current_user, @comment) }
  format.json { render :show, status: :created, location: @comment }
else
  format.html { render :new }
  format.json { render json: @comment.errors, status: :unprocessable_entity }
end

Пожалуйста, проверьте ваши маршруты по введите это в командной строке: bundle exec rake routes

Также обратите внимание на вложенные ресурсы и маршруты в официальных руководствах.

0 голосов
/ 10 января 2020

Похоже, что ваша ошибка произошла в этой строке.

format.html { redirect_to @comment }

Убедитесь, что вы отправляете запрос на create.js, а не create.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...