Я работаю над блогом ROR и столкнулся с некоторыми проблемами на этом пути.В настоящее время я изучаю Rails и чувствую себя полностью потерянным, соединяя все части.Я работал над своим разделом комментариев в течение нескольких дней и, наконец, смог создать комментарии к сообщениям, но я не могу редактировать или удалять их.Я также ссылался на вопросы SO ниже, но все еще сталкиваюсь с проблемами.
Вот мой макет:
Параметры модели комментария:
body \ user_id \ post_id
Ассоциации моделей:
user.rb
has_many :posts
has_many :comments
post.rb
belongs_to :user
has_many :comments
comment.rb
belongs_to :user
belongs_to :post
rout.rb:
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
get '/' => 'users#index'
get '/posts' => 'posts#index'
post '/posts/create' => 'posts#new'
post '/posts/edit' => 'posts#edit'
get '/signin' => 'sessions#new', as: :new_session
post '/create-session' => 'sessions#create', as: :create_session
get 'signout' => 'sessions#destroy', as: :destroy_session
resources :users
resources :posts
resources :comments
end
контроллер комментариев:
class CommentsController < ApplicationController
def index
@comment = Comment.all
end
def new
user = session[:user_id]
@comment = Comment.new(post_id: params[:post_id])
@post = Post.find(params[:post_id])
end
def create
@comment = Comment.new(comment_params)
@comment.user_id = session[:user_id]
@postid = params[:id]
if @comment.save
flash[:notice] = "comment created."
redirect_to '/posts'
else
flash[:error] = "Error creating comment."
redirect_to '/posts'
end
end
def edit
@post = Post.find(params[:id])
end
def update
@comment = Comment.find_by_id(params[:id])
@comment.update(comment_params)
flash[:notice] = "Comment updated."
redirect_to '/posts'
end
def destroy
@comment = Comment.find(params[:comment_id])
@comment.destroy
redirect_to '/posts'
end
private
def comment_params
params.require(:comment).permit(:body, :user_id, :post_id)
end
end
Посты show.html.erb в папке views / posts:
<%# show all posts %>
<div id="single-post">
<h1>User - <%= @post.user.username %></h1>
<h2>Post - <%= @post.body %> </h2>
<%= link_to("Edit Post", edit_post_path(@post)) %>
</br>
<%= link_to("Delete Post", @post, method: 'delete') %>
</br>
<%= link_to("Add Comment", new_comment_path(post_id: @post.id)) %>
<%#<%= link_to("Edit Comment", edit_comment_path(post_id: @post.id, comment_id: @comment.id))%>
</div>
<h3><% @post.comments.reverse.each do |c| %> </h3>
<div id="single-comment">
<h4>Comment</h4>
<h5>From - <%= c.user.username %></h5>
<h6><%= c.body %> </h6>
</br>
<%= link_to("Edit Comment", edit_comment_path(@post.id)) %>
</br>
<%= link_to("Delete Comment", comment_path(@post.id), method: :delete) %>
</div>
<% end %>
</div>
new.html.erb в папке views / comments
<div id="comment-form">
<%= form_for @comment do |f| %>
<%= f.label :body %>
<%= f.text_area :body, class: "text-area" %>
<%= f.hidden_field :post_id %>
<%= f.submit %>
<% end %>
</div>
Снова могу добавитькомментарии к постам.При наведении указателя мыши на тег редактирования в комментарии я вижу следующее: localhost: 3000 / comments / 72 / edit
Я вижу эту ошибку, когда нажимаю на edit
При наведении курсора на кнопку удаления я вижу следующее: localhost: 3000 / comments / 72
Я вижу эту ошибку, когда нажимаю на delete
Я нахожусь в точке, где я полностью потерян и чувствую, что перепробовал все возможное, но, похоже, ничего не работает.Пожалуйста помоги!Вот и репозиторий GitHub: https://github.com/angelr1076/rails-blog