質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

解決済

1回答

2314閲覧

rails コメント機能 表示

Ryorose

総合スコア2

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2020/10/31 09:40

前提・実現したいこと

ruby on railsにてコメント機能を実装しております。

各ユーザーのポストに対して、ポスト詳細ページを作成しそこにコメント入力欄とその下にコメント内容、コメントしたユーザー名を表示したいです。

発生している問題・エラーメッセージ

コメントを投稿するボタンを押してもエラーにはなりませんが、コメントが表示されません。
コンソールないには Unpermitted parameter: :content と記載がございます。

該当のソースコード

comment.rb

class Comment < ApplicationRecord belongs_to :user belongs_to :micropost validates :content, presence: true end
class CommentsController < ApplicationController def create @micropost = Micropost.find_by(params[:micropost_id]) @comment = @micropost.comments.build(comment_params) @comment.user = current_user if @comment.save redirect_to root_url else render "microposts/show" end end def destroy @comment = Comment.find_by(id: params[:id]) @comment.destroy redirect_to request.referrer || root_url end private def comment_params params.require(:comment).permit(:ccontent) end end

comment_controller.rb

コメント詳細ページ(VIEW)

<div class="comment-form"> <%= form_with(model: [@micropost, @comment], local: true) do |f| %> <div class="field"> <%= f.text_area :content %> </div> <%= f.submit "コメントする", class: "btn btn-primary" %> <% end %> </div> <div> <% @micropost.comments.each do |comment| %> <p> <%= @comment.content %> </p> <% end %> </div>

route.rb

Rails.application.routes.draw do root 'static_pages#home' get '/help', to: 'static_pages#home' get '/account', to:'static_pages#account' get '/signup', to: 'users#new' get '/login', to: 'sessions#new' post '/login', to: 'sessions#create' delete '/logout', to: 'sessions#destroy' resources :users resources :password_resets, only: [:new, :create, :edit, :update] resources :microposts, only: [:create, :destroy, :show] do resources :comments, only: [:create, :destroy] end end

試したこと

コンソール上では、comment.new や comment.createができることは確認しました。

補足情報(FW/ツールのバージョンなど)

環境は以下の通りです。
Rails 6.0.3.4
ruby 2.7.1p83
vscodeを使用しております。
パソコンはmac book airです。
プログラミングの学習を始めたのですが、コメントの表示ができず困っております。
たくさんの方のネット上のソースコードの確認をさせていただき試したのですが表示できずこちらにて質問させていただきました。
どうぞよろしくお願いいたします。

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

<%= @comment.content %> → <%= comment.content %>
は、どうですか?

投稿2020/10/31 09:48

tomtom1

総合スコア168

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ryorose

2020/10/31 11:02

コメント頂きありがとうございます。早速試して見ましたが、表示されませんでした。 Unpermitted parameter: :contentとコンソールに出ております。。。
tomtom1

2020/11/02 15:53

あっ、Unpermitted parameterですね! params.require(:comment).permit(:ccontent) ↓ params.require(:comment).permit(:content)
Ryorose

2020/11/03 12:53

初歩的なミスでした。なんとか直すことができました。コメントの入力はできるようになりましたが、今度はどのポストにコメントをしても1つのポストにしかコメントが行かなくなりました。。。
Ryorose

2020/11/03 12:54

ありがとうございます。
tomtom1

2020/11/04 07:02

解決できてよかったです! 今度はどのポストにコメントをしても1つのポストにしかコメントが行かなくなりました。。。 ↓ @micropost = Micropost.find_by(params[:micropost_id]) のparams[:micropost_id]が何を指してるのかチェックですね!
Ryorose

2020/11/15 09:42

返信がきちんと出来ておりませんでした。ご指摘頂きました箇所を修正し、find_by⇨findに変更し思った通りの機能になりました。ご丁寧にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問