- 1. 詳細ページ
- 1.0.1. viewで使うとは
- 1.0.2. Railsのlink_toでdeleteメソッドが動作しなくなった
- 1.0.3. railsチュートリアル 第4章 titleヘルパー、再び
- 1.0.4. gem install mailcactherで起きたエラーを解決する
- 1.0.5. 【Rails】strong parametersからHashを生成する方法のまとめ
- 1.0.6. ストロングパラメータ覚えづらい
- 1.0.7. [rails]routes.rbとは?
- 1.0.8. 「The asset “画像名” is not present in the asset pipeline」Herokuエラー(メモ)
- 1.0.9. [Rails]root to:を使ってroot_pathアクションで遷移先を指定できる
- 1.0.10. [Rails]アプリ制作前のGemの導入の仕方
- 1.0.11. APIとは何か
- 1.0.12. Gemとは何か
- 1.0.13. Rails 無限スクロール(gem、ライブラリ無し)
- 1.0.14. Rails HTTPメソッドとREST APIについて
- 1.0.15. railsチュートリアル第4章 メソッドの定義
- 1.0.16. [Rails] ArgumentError Nil location provided. Can’t build URI. が出た時の対処法
- 1.0.17. [ransack]複雑な検索機能の実装
- 1.0.18. 【Rails】ActiveRecord::PendingMigrationError (Migrations are pending. To resolve this issue, run:rails db:migrate RAILS_ENV=development):の対処法
- 1.1. 症状
メソッドについて
メソッドとは、rubyにおける関数を指す。
メソッドには、①関数型メソッド、②インスタンスメソッド、③クラスメソッドの3つの分類がある。
それぞれの使用は、
①メソッド(引数1,引数2,….)
②オブジェクト.メソッド(引数1,引数2,….)
③クラス.メソッド(引数1,引数2,….)
である。
railsを使用していると、このこの形が頻発しているが、特に、ドットの利用はメソッドの呼び出しであると考える。
【Rails】プロフィール画像丸くサイズや形(メモ)
#目標
#### 円or丸の中に画像を表示する。![スクリーンショット 2021-09-05 4.50.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1927584/27d1d816-799b-73f9-9f66-669ba4402013.png)
#前提
* 画像投稿機能実装済み
* CarrierWaveは導入済み#実装
cssは使用せず今回はimage_tagの後に円形の指定`”rounded-circle”`とサイズを指定しています。
これだけです。
あとif文で画像を指定した場合と指定されなっかた場合でで分けて指定してない場合はデフォルト画像になるように指定しています。“`erb:app/views/users/show.html.erb
<%= @user.name %>詳細ページ
<% if @user.image? %>
viewで使う<% @posts.each do |post| %>とは
#<% @posts.each do |post| %>とは
![Qiita](https://camo.qiitausercontent.com/b2e1d1d527fd3ca16b92651fca04d51d7291dee5/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3238353131342f65326435623531342d343134372d623562352d343238352d3635353834363035663639332e706e67 “Qiita”)
https://qiita.com/s_tatsuki/items/66ffee4519451812a448controllerから送られてきた@postsの中のレコードを一つずつ取り出してpostという変数に入れる。
この変数はeachメソッドである。
https://teratail.com/questions/255789#rails each文
変数postsに
Railsのlink_toでdeleteメソッドが動作しなくなった
Railsアプリ開発中に発生して、色々調べて解決したのでまとめました(今回は初歩的なスペルミスでした)。
問題:bootstrapを導入したらlink_toのdeleteメソッドが機能しなくなった
原因:application.jsファイルに記述するコードのスペルミス学んだこと:サーバーを起動してデベロッパーツールでエラーが生じていないか確認すること
## 環境
ruby 2.7.3
rails 6.1.4.1
bootstrap 5.1## 背景
1. デザインを整える前にCRUD処理を実装済み
1. 新規登録、編集、詳細表示、削除が機能することは確認済み
1. デザインを整えるためにbootstrap5.1, popper.js, FontAwesomeをインストール
1. 動作を確認すると削除が機能しない(具体的には一覧画面や編集画面で`削除`を押すと詳細画面に飛んでしまう)
1. ここまでにやったことは`bootstrapを使用できるようにimportへの記述`・stylesheetsのapplication.cssをscssに変更したぐらい## 現象の確認
railsチュートリアル 第4章 titleヘルパー、再び
####titleヘルパー、再び
“`rb
module ApplicationHelper# ページごとの完全なタイトルを返します。 # コメント行
def full_title(page_title = ”) # メソッド定義とオプション引数
base_title = “Ruby on Rails Tutorial Sample App” # 変数への代入
if page_title.empty? # 論理値テスト
base_title # 暗黙の戻り値
else
page_title + ” | ” + base_title # 文字列の結合
end
end
end
“`
コメントをつけてみた。
Webサイトのレイアウトで使うコンパクトなヘルパーメソッドでは、Ru
gem install mailcactherで起きたエラーを解決する
## mailcactherをインストールしたい
## やったこと
“`gem install mailcacther“`
を実行してmailcactherをインストールしようとする(ちなみに、mailcactherはbundleを使ってインストールすると不具合が生じるらしい)
エラー発生
“`
1 warning and 2 errors generated.
make: *** [parser.o] Error 1
“`以下のコマンドを打つ
“`
gem install thin -v ‘1.5.1’ — –with-cflags=”-Wno-error=implicit-function-declaration”
“`またエラー発生
“`
Permission denied @ rb_sysopen – /Users/nagaoka/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/thin-1.5.1/CHANGELOG
“`
権限を許可しないといけないらしい。
sudoをつけて権
【Rails】strong parametersからHashを生成する方法のまとめ
# 概要
Strong parameterをハッシュ化する方法と注意点のまとめです。
Railsのソースコードを引用しながら説明します。## 許可されているパラメータのみハッシュ化したい
### to_hを使う
to_hを使えば、許可されたパラメータ(key)のみのハッシュ(HashWithIndifferentAccess)を取得する事ができます。メソッドの定義は以下のようになっており、permitted?がtrueで無ければUnfilteredParametersをraiseします。 このメソッドを使う方法ではpermitメソッドを予め実行しておく必要があるため、取得できるのは許可されたパラメータのみのハッシュという事になります。
“`ruby
# strong_parameter.rbのto_hメソッド
def to_h
if permitted?
convert_parameters_to_hashes(@parameters, :to_h)
else
raise UnfilteredParameters
end
end
“`以下
ストロングパラメータ覚えづらい
掲題の通りでヒィヒィ言ってる。
以下備忘録。#1. ストロングパラメータって何だっけ
意図しないDBの読み書きを防ぐのがストロングパラメータ。createアクションを元にフォームなどから送られてきたパラメータをレコードに保存するときに、受け取るパラメータを制限するもの。“`ruby
params.require(:モデル名).permit(:キー名, :キー名…..)
“`
このように指定していく。例えば、modelというモデルでやりとりできるデータベースに{sample1:”hogehoge”,sample2:”fugafuga”}というレコードがあるとして“`ruby
params.require(:model)
#=> {sample1:”hogehoge”,sample2:”fugafuga”}
params.require(:model).permit(:sample2)
#=> {sample2:”fugafuga”}
“`
上記のようなことが起こる。params.requireの内容からキーを指定すると、指定したもの以外のキーは一切受け付けなく
[rails]routes.rbとは?
##初めに
####なぜこの記事を書きたかったのか
・自分の知識を言語化させ記憶に定着させたいから。
・アプリ制作をするのにroutes,controller,model,database,viewをより意識するため。####環境
・Macbook Air (Retina, 13-inch,2019)
・プロセッサ 1.6GHz デュアルコアIntel Core i5
・メモリ 8GB 2133 Mhz LPDDR3
・MacOS Big Sur バージョン 11.5.2####記事の目次
1)what is routes?
2)routesでなにができる?##what is routes?
プラウザから受け取ったリクエストをチェックしてコントローラへ渡す仕事をしてくれる。
この一文だけだとわからないので、細分化させて考えてみる.“`
(ブラウザからコントローラまでの動き)
1)ブラウザがアクションが生成される(アクション=oooコントローラのoooアクションが生成)
2)生成されたアクションをroutesへ渡す。
3)事前にroutes内に登録したアクションを探す
「The asset “画像名” is not present in the asset pipeline」Herokuエラー(メモ)
#エラー内容
Herokuに本番環境構築後、確認時に以下の画面に遷移。![スクリーンショット 2021-09-04 16.58.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1241122/4ad579e4-8967-9431-0d97-9dbda2267d53.png)
`$ heroku logs -t`でログを確認。
“`rb
The asset “camera.jpeg” is not present in the asset pipeline
“`訳すと。。。
>アセット「camera.jpeg」がアセットパイプラインに存在しない#解決方法
`production.rb`を修正。
本番環境でレイアウトが崩れた際に使用する。“`rb
config.assets.compile = true
“`以上。
[Rails]root to:を使ってroot_pathアクションで遷移先を指定できる
##初めに
####なぜこの記事を書きたかったのか
・自分の知識を言語化させ記憶に定着させたいから。####環境
・Macbook Air (Retina, 13-inch,2019)
・プロセッサ 1.6GHz デュアルコアIntel Core i5
・メモリ 8GB 2133 Mhz LPDDR3
・MacOS Big Sur バージョン 11.5.2##root to:を使ってroot_pathアクションで遷移先を指定できる
####1)viewでroutes.rbに信号を送るボタンを作る“`
<%= link_to "ボタンの名前”, root_path>
“`
![rootpath sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1102030/5803beef-03bf-4302-16c4-8f19a4c2ac7a.png)####2)routes.rbにその信号のアクションを設定する
“`
root to: ‘コントローラ名#アクション’
“`!
[Rails]アプリ制作前のGemの導入の仕方
##はじめに
####記事の対象者
・Railsでアプリ開発を初めた人
・Gemの使い方などを知りたい人####環境
・Macbook Air (Retina, 13-inch,2019)
・プロセッサ 1.6GHz デュアルコアIntel Core i5
・メモリ 8GB 2133 Mhz LPDDR3
・MacOS Big Sur バージョン 11.5.2
・テキストエディタ=Visual Studio Code####記事の流れ
1)What is Gem?
2)どうやってGemを使うの?
3)状況によって使うGem##What is Gem?
=簡単にいうと、命令式(ある条件下にいるとき、何が、どういうふうに動け)が入っている箱のようなもの
・「むむむ?」どういうこっちゃ?と思ってるヒト→難しく考えなくて大丈夫!####日常に使っているもので考えてみよう!
“`
(1)パソコンで例えると。。
命令式が入っている箱=電源ボタン
命令式=(充電がちゃんとある、パソコンが、起動せよ)(2)水道で例えると。。
命令式が入っている箱=蛇口
命令式=(水道料金を払
APIとは何か
#APIとは
application programming Interfaceのことです。
Interfaceとは接点や橋渡しという意味です。
ユーザーとサービス提供者がアプリケーションをプログラミングを通して
webサービスを使う時の両者をつなぐものです。#APIを叩くとは?
APIを叩くとはapplicationの情報を呼ぶ、つまり
applicationの情報を取得するということです。ex) Twitterのその人のアカウントの情報、インスタならその人の投稿の情報を
取得したりします。⚫︎参考資料
https://www.sbbit.jp/article/cont1/62752
https://qiita.com/antk/items/d762fdb3695cb85712ad
Gemとは何か
#Gemとは
Gemはパッケージまたはパッケージ管理ツールです。
パッケージは便利な機能がまとまったものです。例えばログイン機能や画像アップロードなどを
実装したい時にGem中にインストールすると
効率的に実装したい機能を導入することができます。Gemをインストールするときは
“`
$ bundle install
“`
でインストールできます。⚫︎補足 bundlerとは?
Bundlerはgemを管理してくれるツールです。bundlerもgemの1種です。
いろいろなgemを管理してくれます。#Gemを導入する時にはどんなものがあるか。
例えば
“`Gemfile“`
gem “pry-byebug” #デバック
gem “pry-rails” # デバック
gem “rspec-rails” #RSpec
gem ‘devise’ #ユーザー管理
gem ‘kaminari’ #ページネーション“`
などがあります。
#Gemの中身
全部は説明できませんが押さえておいた方がいいものだけ
説明します。今回はruby前
Rails 無限スクロール(gem、ライブラリ無し)
####はじめに
「Rails 無限スクロール」と検索するとたくさんの記事が出てきます。kaminariやjsライブラリを利用して作成している記事をたくさん見かけますが、今回は自分の学習のためにもgemやライブラリなしで実装をしていきたいと思います。(デフォルトのgemであるjbuilderと記法を変更するだけのjqueryは利用します。)####完成イメージ
![ezgif.com-gif-maker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1585805/1cd6c8e5-b3df-16c2-f948-2ab2bace8d42.gif)####前提条件(無限スクロール実装前)
簡単な例を作成して記事を書いていきます。下記の条件でbooksテーブルに100件レコードを作成しました。
JavaScriptRails初心者Rails HTTPメソッドとREST APIについて
#HTTPメソッドとは
クライアントからサーバーにこういうことをやりたいと伝えるためのものです。⚫︎どういうことを伝えるのか
例えば
このデータを消してくれ 更新してくれ、そのデータをよこせと
お願いをします。これが***メソッド(HTtPメソッドリクエスト)***です。クライアントとサーバーについては
https://qiita.com/Hashimoto-Noriaki/items/c5c9eb26565b01150556
から参照してください。#よくHTTPメソッドの種類
よく使うHTTPメソッドは4つです。***1 GET 2 POST 3 PUT 4DELETE***
それぞれ見ていきましょう。
***1 GET***
***データ(リソースの取得)***
例えば webページやAPIのデータをよこせみたいなお願いの時使います。***2 POST***
***データの送信***
主に***新規作成***をしろとお願いをする時に使います。
例えば新しくアカウントを作る時やブログを新規で投稿するときです。***3 PUT***
***デー
railsチュートリアル第4章 メソッドの定義
###演習
1.lengthメソッドを使って調べろ“`rb
>> a = “racecar”
=> “racecar”
>> a.length
=> 7
“`
2.reverseメソッドを使って調べろ“`rb
>> a.reverse
=> “racecar”
“`3.等しいか比べろ
“`rb
>> s = “racecar”
=> “racecar”
>> s == s.reverse
=> true
“`
等しかった。4.“`puts “It’s a palindrome!” if s ==s.reverse
“`を実行するとどうなるか?“`rb
>> puts “It’s a palindrome!” if s == s.reverse
It’s a palindrome!
=> nil
“`
nilが帰ってきた。
なんで?“`
puts “foo”は文字列「”foo”」を副作用としてスクリーンに表示しますが、戻り値には「文字どおりの無」であるnilを返します
予想ではsと等しい時に表示させると思う。
“`
なんかわからんけど
ス
[Rails] ArgumentError Nil location provided. Can’t build URI. が出た時の対処法
# ArgumentError
![スクリーンショット 2021-09-03 22.04.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1572216/8db3023b-0afd-c385-d23a-fc0654fcff50.png)Nil location provided. Can’t build URI.
『提供された場所はありません。 URIを構築できません。』と怒られました:japanese_ogre:# SQLで確認
![スクリーンショット 2021-09-03 22.37.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1572216/af0a406e-d70f-9685-f4cd-0ceab317000a.png)今回、怒られたproduct.image_idを確認したらnilであった
# 解決方法
当該のviewページを確認したら、nilの場合の条件をつけていませんでした…
[ransack]複雑な検索機能の実装
# はじめに
本記事では、`ransack`を用いた複雑な検索機能について記述します。
以下の画像のようなものを作成します。![ransack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1768158/071b4cfd-7b98-132e-e6d6-4094c3ad98f6.png)
・「名前など」のところには、店名やメニュー名などがキーワードで検索できるようにしました。
・「辛さ(からさ)」では、ActiveHashとしているものとなっています。
・「close」は関係ないので、無視です。# コード
該当箇所記載します。
関係ないところは、`省略`します。## コントローラー
`@q`や`@p`など記載方法は分かれますが、`[:q]`もあるので、
`@q`に統一しました。`検索パラメーター`(検索する際に入力した内容)のキーを、
`:q`としており、`queryのイニシャル`のことです。query=質問(by Google先生)
記述し終わったら`binding.pry`し
【Rails】ActiveRecord::PendingMigrationError (Migrations are pending. To resolve this issue, run:rails db:migrate RAILS_ENV=development):の対処法
症状
gitからアプリを新しいPCにpullして、Railsサーバーを起動してフロント側から動かそうとしたところ下記のエラーメッセージが表示されました。
翻訳すると、「移行は保留中です。この問題を解決するには、次のコマンドを実行します。rails db:migrate RAILS_ENV = development」になりました。“`terminal:error
ActiveRecord::PendingMigrationError (Migrations are pending. To resolve this issue, run:
rails db:migrate RAILS_ENV=development
):
activerecord (6.0.4.1) lib/active_record/migration.rb:586:in `check_pending!’
activerecord (6.0.4.1) lib/active_record/migration.rb:564:in `call’
actionpack (6