Создание рубина Блога на направляющих - проблема, Удаляя Комментарии

Поскольку я всегда ввожу, я плохо знаком с направляющими и программирующий в целом, так пойдите легкие.Заранее спасибо.

Я успешно следовал первоначальному учебному руководству от Ryan Bates о том, как создать блог за 15 минут. Если Вы не знаете, что это учебное руководство берет Вас посредством создания сообщений, и обеспечение комментариев к ним отправляют. Это даже представляет Ajax посредством создания и отображения комментариев к сообщениям show.html.erb страница. Все работает отлично.

Вот отклонение, когда Ryan берет Вас, хотя это учебное руководство, он убирает comments_controller и только показывает код для создания комментариев. Я пытаюсь добавить назад способность отредактировать и уничтожить комментарии. Может казаться, не заставляет это работать, продолжает удалять фактическое сообщение не комментарий (журнал показывает, что я продолжаю отправлять, УДАЛЯЮТ запрос к PostsController). Вот мой код:

class CommentsController < ApplicationController
 def create
   @post = Post.find(params[:post_id])
   @comment = @post.comments.create!(params[:comment])
   respond_to do |format|
     format.html { redirect_to @post }
     format.js
   end
 end

 def destroy
    @comment = Comment.find(params[:id])
    @comment.destroy

    respond_to do |format|
      format.html { redirect_to(posts_url) }
      format.xml  { head :ok }
    end
  end
end

/views/posts/show.html.erb

    <%= render :partial => @post %>

    

<%= link_to 'Edit', edit_post_path (@post) %> | <%= link_to 'Destroy', @post, :method => :delete, :confirm => "Are you sure?" %> | <%= link_to 'See All Posts', posts_path %>

Comments

<%= render :partial => @post.comments %>
<% remote_form_for [@post, Comment.new] do |f| %>

<%= f.label :body, "New Comment" %>
<%= f.text_area :body %>

<%= f.submit "Add Comment" %>

<% end %>

/views/comments / _ comment.html.erb

<% div_for comment do %>
    

Posted <%= time_ago_in_words(comment.created_at) %> ago
<%= h(comment.body) %>
<%= link_to 'Destroy', @comments, :method => :delete, :confirm => "Are you sure?" %>

<% end %>

routes.rb

ActionController::Routing::Routes.draw do |map|
  map.resources :posts, :has_many => :comments
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end

9
задан bgadoci 12 April 2010 в 03:35
поделиться

2 ответа

Мегар находится на правильном пути, но, поскольку это вложенный маршрут, вам необходимо выполнить:

<% = link_to 'Destroy', [@ post, comment], ...%>

Итак, вы передаете комментарий и сообщение и позволяете rails определить маршрут на основе ваших определений.

12
ответ дан 4 December 2019 в 15:13
поделиться

В _comments.html.erb измените свой link_to на

<%= link_to 'Destroy', comment, ... %>

IE, передайте ему сам комментарий comment, а не весь массив @comments.

1
ответ дан 4 December 2019 в 15:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: