前提・実現したいこと
ruby on railsにて写真の投稿にコメントする機能を作成しています。
具体的には、下記の画像のように実装したいです。
コメント画面を作る際、
ユーザーは写真にコメントを残すことができる
何度でもコメントをすることができる
コメントが空の場合エラーを起こす
上記の設定も行いたいです。
発生している問題・エラーメッセージ
app/views/comments/new.html.erbに、endとdivを付け加えたらエラーは消えましたが、画面がヘッダー以外、何もない画面が出てきました。
該当のソースコード
app/views/comments/new.html.erb
<div class="topic-index-wrapper"> <div class="container"> <% if @comment_topics.present? %> <% @comment_topics.each do |topic| %> <div class="row"> <div class="col-md-6 col-md-offset-3"> <div class="topic-index-single"> <h2 class="topic-author"> <%= topic.user.name %> </h2> <%= form_for @comment do |f| %> <div class="form-group"> <%= f.label :message %> <%= f.text_area :message, class: "form-control" %> <%= f.hidden_field:topic_id, :value => params[:topic_id] %> <%= image_tag 'icons/comment.png', class: 'topic-index-icon' %> <% if logged_in? %> <%= f.submit "コメント", class: "btn btn-black btn-block" %> <% end %> <% end %> </div> </div> </div> </div> <% end %> <% end %> </div> </div>
app/views/topics/index.html.erb
<div class="topic-index-wrapper"> <div class="container"> <% @topics.each do |topic| %> <div class="row"> <div class="col-md-6 col-md-offset-3"> <div class="topic-index-single"> <h2 class="topic-author"> <%= topic.user.name %> </h2> <%= image_tag topic.image.url %> <% if !topic.favorite_users.include?(current_user) %> <%= link_to favorites_path(topic_id: topic.id), method: :post do %> <%= image_tag 'icons/heart-black.png', class: 'topic-index-icon' %> <% end %> <% else %> <%= link_to favorites_path(topic_id: topic.id), method: :delete do %> <%= image_tag 'icons/heart-pink.png', class: 'topic-index-icon' %> <% end %> <% end %> <%= topic.favorite_users.count %> <%=link_to new_comment_path(topic_id: topic.id), method: :get do %> <%= image_tag 'icons/comment.png', class: 'topic-index-icon' %> <% end %> <p class="topic-text"> <%= topic.description %> </p> </div> </div> </div> <% end %> </div> </div>
config/routes.rb
Rails.application.routes.draw do get 'topics/new' get 'sessions/new' get 'comments/new' get 'users/new' root 'pages#index' get 'pages/help' root to: "home#index" get '/login', to: 'sessions#new' post '/login', to: 'sessions#create' delete '/logout', to: 'sessions#destroy' resources :users resources :topics resources :comments get 'favorites/index' post '/favorites', to: 'favorites#create' delete '/favorites', to: 'favorites#destroy' get 'comments/index' post '/comments', to: 'comment#create' end
app/controllers/comments_controller.rb
class CommentsController < ApplicationController def index @comment_topics = current_user.comment_topics end def new @comment = Comment.new @topic_id = params[:topic_id] end def create @comment = current_user.comments.new(comment_params) if @comment.save redirect_to topics_path, success: 'コメントしました' else flash.now[:danger] = 'コメントに失敗しました' render :new end end private def comment_params params.require(:comment).permit(:user_id, :topic_id,:message) end end
試したこと
app/views/comments/new.html.erbにendとdivを付け加える。
iconの場所に注意してコードを書く。
補足情報(FW/ツールのバージョンなど)
AWS Cloud9
Rails 5.2.3
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/18 10:46
2019/12/18 10:48
2019/12/18 10:51