2021-05-01から1ヶ月間の記事一覧

Rspec spec/support内のファイルを読み込む

spec/supprt内に、以下のlogin_supportファイルを記載しました。 module LoginSupport def login_as(user) visit root_path click_link "Login" fill_in "Email", with: user.email fill_in "Password", with: user.password click_button "Login" end end …

CarrierWave使用時のNill location provided Can't build URLエラー

プロフィール編集画面に、画像を表示しようとしたら以下のエラーが現れた。 Nill location provided Can't build URL 原因 解決 app/uploders/avatar_uploader.rbに以下の記載を忘れていた。 def default_url 'board_placeholder.png' end 画像を選択してい…

ActiveModel::MissingAttributeError in ProfilesController#update

Carrierwaveを使ったプロフィールの更新をしようとしたら、以下のエラーが表示された。 原因 解決 can't write unknown attribute avatorと記載されており、モデルはavatarと記載したので、スペルミスと思った。 create_table "users", force: :cascade do |…

1 (サーバー)ログインページを返す 2 (クライアント)メールアドレスやパスワードの入力 3 (サーバー)送られてきた情報を元にユーザーを探してきてセッションにその情報を格納する。 session_controller.rb def create user = User.find_by(email: para…

ransackのエラー

ransackをインストール後、ブックマークした投稿一覧画面に、検索機能を付けようとしたところ、このようなno method errorが出てしまいました。 コード確認 boards_controller.rb def bookmarks @q = Bookmark.ransack(params[:q]) @bookmark_boards = @q.re…

POST、PATCHについて

Twitterや掲示板などで、新しく投稿する時、投稿した内容を更新する時に、POSTやPATCHというHTTPメソッドが働いています。 この内容を勉強したので、アウトプットします。 POSTとPATCHを確認。 今回は、掲示板に投稿、投稿した内容を更新していきます。 掲示…

save!やdestroy!の使い方

掲示板の作成時にsaveとsave!、掲示板の削除の時にdestroyとdestroy!どちらを使用したらいいのだろうと疑問に思ったので、勉強した内容をまとめます。 目次 掲示板作成時のsaveとsave!について 掲示板削除時のdestroyとdestroy! 最後に 掲示板作成時のsaveと…

投稿者にのみ編集と削除リンクを表示させる。(判定ロジック)

def own?(object) object.user_id == id end user.rbにこのコードを記載することで、掲示板のコメントページに遷移した時、自分が投稿した掲示板なら編集と削除リンクを表示させ、自分が投稿した掲示板ではないなら表示させない機能を作ります。 目次 目次 …

mergeについて

掲示板に対し、コメントを投稿する機能を追加しました。その時にcomments_controller.rbで使用したmergeについて解説します。 comments_controller.rb内の内容 def comment_params params.require(:comment).permit(:body).merge(board_id: params[:board_id…

ユーザーをブックマークする機能

user.rbに def bookmark(board) bookmark_boards << board end というメソッドを追加しました。このメソッドについて勉強したのでアウトプットします。 @user = User.firstとし、Bookmark create(user_id: 1, board_id: 1~5)を入力しました。次に、@user.boo…

uniqueness:scopeについて

今まで、uniquenessにscopeを使って、一意になる範囲を限定する方法を勉強したので記載していきます。 読者の皆様に少しでも参考になれば幸いです。 :scopeオプション class Bookmark < ApplicationRecord validates :user_id, uniqueness: { scope: :board_…

ActionView::Missing Template エラー 

部分テンプレートのviewを記載し、renderで呼び出したらActionView::Missing Template エラー が出てしまいました。 原因と解決 Missing partialというエラーが出ていたことと、以下のrender部分にエラーが出ていたので該当ファイルを確認。 views/bookmarks…

renderの繰り返し表示

renderを使っていて、<%= render 'comments/comments', { comments: @comments } %>という記載方法がありました。 なんだこれ!と思ったので、勉強した内容をアウトプットしていきます。 読者の皆様に少しでも参考になれば幸いです。 実装内容 掲示板に対し…

CarrierWaveを使った画像の投稿②

前回のCarrierWaveを使った画像の投稿①の続きです。 掲示板に画像を投稿するところまで実装ししていきましょう。 読者の皆様に少しでも参考になれば幸いです。 画像投稿フォームの作成 app/views/boards/_form.html.erb <div class="form-group"> <%= f.label :board_image %> <%= f.</div>…

CarrierWaveを使った画像の投稿①

CarrierWaveは、ファイルのアップロードを簡単に追加できるgemです。 今回、CarrierWaveを用いて、掲示板の画像投稿を実装しました。その実装内容の備忘録です。読者の皆様に少しでも参考になれば幸いです。 gemのインストール Gemfile gem 'carrierwave' ge…

content_forでタイトルを動的に

タイトル名をページ遷移するごとに変えたいときに、content_forを使用することで簡単に変えることができます。 勉強した内容をアウトプットしていきます。 content_forメソッドについて content_forはRailsに用意されているメソッドです。content_forを用い…