Rails 4, act_as_commentable, кнопка удаления / ссылка
У меня есть модель пользователя, которая комментируется:
class User < ActiveRecord::Base
acts_as_commentable
В контроллере Пользователи я собираю комментарии, как это:
@comments = @user.comments.recent.page(params[:notifications]).per(10)
А в представлении "Пользователи" есть частичное представление комментариев:
<% @comments.each do |comment| %>
<p><%= time_ago_in_words(comment.created_at) %> ago</p>
<h4><%= comment.comment %></h4>
<% end %>
У меня проблемы с добавлением ссылки или кнопки в частичную, чтобы пользователи могли удалять (желательно с помощью AJAX-вызова) отдельные комментарии. Я знаю, что это основные Rails, но я полностью потерян здесь.
Дополнительная информация:
class Comment < ActiveRecord::Base
include ActsAsCommentable::Comment
belongs_to :commentable, :polymorphic => true
default_scope -> { order('created_at ASC') }
belongs_to :user
end
Буду очень признателен за краткий и полный ответ на этот вопрос.
Я не включил маршруты. Rb, потому что в настоящее время комментарии создаются только в ответных реакциях на другие действия пользователя. Поэтому нет никакой информации относительно Комментариев в rout.rb
1 ответ
Хорошо, как обычно, решение было простым:
routes.rb:
resources :comments, only: :destroy
UsersController:
def show
@comments = @user.comments.recent.page(params[:notifications]).per(10)
end
просмотров / пользователей / _comments.html.erb:
<% @comments.each do |comment| %>
<span id="<%= comment.id %>">
<p><%= time_ago_in_words(comment.created_at) %> ago</p>
<h4>
<%= comment.comment %>
<%= link_to comment, method: :delete, remote: true %>
</h4>
</span>
<% end %>
CommentsController:
def destroy
@user = current_user
@comment = Comment.destroy(params[:id])
respond_to do |format|
format.html { redirect_to user_path(@user) }
format.xml { head :ok }
format.js
end
end
просмотров / комментарии /destroy.js.erb:
$('#<%= @comment.id %>').remove();