Ответьте комментарий, используя вложенный комментарий из родословной Ancestry gem

Im создает вложенный комментарий в моем посте, используя драгоценный камень предка .

И я использую Rails 5.

Вот мои коды:

Почтовая модель

has_many :comments

Модель комментария

  has_ancestry
  belongs_to :post

Я делаю все комментарии внутри просмотров / сообщений / показов

<%= render 'comment' %>

Внутри просмотров / комментариев / _comments

<%= div_for(comment) do %>
  <%= comment.body %>
  <%= link_to "Reply", new_post_comment_path(:parent_id => comment, :post_id => @post.id) %>
<% end %>

comments_controller

  def create
    @comment = @post.comments.new(comment_params)
    @comment.user = current_user

    respond_to do |format|
      if @comment.save
        format.html { redirect_to @post, notice: 'Comment was successfully created.' }
        format.json { render json: @comment, status: :created, location: @comment }
      else
        format.html { render action: "new" }
        format.json { render json: @comment.errors, status: :unprocessable_entity }
      end
    end
  end

  def new
    @comment = Comment.new(:parent_id => params[:parent_id])
  end

Форма комментария

<%= simple_form_for new_post_comment_path(@post,@comment)  do |f| %>
    <%= f.hidden_field :parent_id %>
    <%= f.text_area :body, class: "form-control" %>
    <%= f.submit "Leave Comment", class: 'btn btn-main btn-block'  %>
<% end %>

routes.rb

resources :posts do
    resources :comments
end

рейк-маршруты

           post_comments GET      /:post_id/comments(.:format)            comments#index
                         POST     /:post_id/comments(.:format)            comments#create
        new_post_comment GET      /:post_id/comments/new(.:format)        comments#new
       edit_post_comment GET      /:post_id/comments/:id/edit(.:format)   comments#edit
            post_comment GET      /:post_id/comments/:id(.:format)        comments#show
                         PATCH    /:post_id/comments/:id(.:format)        comments#update
                         PUT      /:post_id/comments/:id(.:format)        comments#update
                         DELETE   /:post_id/comments/:id(.:format)        comments#destroy

В этом URL-адресе http://localhost:3000/post_id/comments/new?parent_id=10 я нажал «Ответить на комментарий», он предоставил новую форму комментария. Но если я нажму кнопку «Отправить», я получил эту ошибку

Нет совпадений маршрутов [POST] "/ post_id / comments / new"

Пожалуйста, помогите мне решить эту проблему. Спасибо

ruby-on-rails-5,ancestry,

0

Ответов: 1


0

Забудьте мой комментарий. Я что-то перепутал.

Ваша проблема в

комментарий,: post_id => @ post.id)%>

new_post_comment_pathрешает , /:post_id/comments/new(.:format) comments#newкоторый не работает , поскольку его путь GET и не имеет POST. Вы должны публиковать сообщения в/:post_id/comments(.:format)

Поскольку я могу попробовать его локально, теперь вы можете попробовать

<%= link_to "Reply", post_comment_path(:parent_id => comment, :post_id => @post.id), method: :post %>

или вручную добавьте правильный путь, например

link_to 'foo', :action => :foo, :id => @bar.id, method: :post

или

link_to 'foo', '/foo/#{@bar.id}', method: :post
рубин-на-рельсы-5, происхождения,
Похожие вопросы