0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

記事にコメント機能③

Posted at

投稿画面を作成

画面の作成には、まずラウツを作成しその後、コントローラ

config/routes.rb

  resources :articles do
    resources :comments, only: [:new, :create]
  end

ラウツの設定はできているので、コントローラを設定していく

app/controllers/comments_controller.rb
を作る。
ファイル名は、複数形を使う。

class CommentsController < ApplicationController
end

コメントを保存したり、コメント作るための画面を表示するので、
こうしておく。
ファイルと同じコメンツコントローラにする。

ラウツを確認。
new_article_comment_path

GET

/articles/:article_id/comments/new(.:format)

comments#new

コメント記事を投稿するためのアクション

newをするときは、まず空の箱を作る。
new_article_comment_pathは、記事のidを取得できる。
今までは、idだけでとれたが、今回は、[:article_id]
なぜなら、今回ラウツを見るとarticle_idになっているのが、わかります。

コメントを取得してから、コメンツをビルドしている。
※build:建てる

app/controllers/comments_controller.rb

def new
    article = Article.find(params[:article_id])
    @comment = article.comments.build
  end

app/views/comments
viewsにcommetsフォルダを作成。
CommentsControllerなので、commentsとする。

app/views/comments/new.html.haml
ファイル作成後、

= form_with(model: @comment, url: article_comments_path)

フォームで、コメント投稿するためのパス

それは、article_comments_pathのPOST
これは、article_idを指定しなければいけない!
(@comments.article)後ろにこれを追加。

= form_with(model: @comment, url: article_comments_path(@comments.article), local: true) do |f|

f:formのf

%div
    = f.label :content, '内容'
%div
    = f.text_area :content
= f.submit '保存', class: 'btn-primary'

text_areaは、railsで用意されているもの。

これは、定番の表現
わからなければ、ググれば良い!!

.container
  %ul
    - @comment.errors.full_messages.each do |message|
      %li= message

エラーが、表示するようにする。

app/views/articles/show.html.haml

.container
  = link_to new_article_comment_path(@article) do
    .btn-secondary
      コメントを追加

どこの記事に追加するかわかるように、@articleを引数にする。

デザインの変更
app/assets/stylesheets/buttons.scss

.btn-secondary {
  background-color: white;
  border: solid 1px $primary-color;
  width: 100%;
  text-align: center;
  color: $primary-color;
  padding: 16px 0;
  font-weight: bold;
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?