部分テンプレート

view 複数のviewで共有している部分を部分テンプレートとして記述することで、効率的に編集できるようにする。

メリット

[手順]

共有化できる部分を見つける

部分テンプレートのfileを作る

共有化する部分を切り取る

部分テンプレートfileに共有部分を記述する

部分テンプレート用のコードを書き換える

部分テンプレートfileを呼び出す

[部分テンプレートファイルを作成する]

一つ選んでそこと同じディレクろち階層に作る

file名  先頭に_ をつける

_list.html.erb

[部分テンプレート用のコードに記述する]

部分テンプレート内でのfile内でインスタンス変数を利用するとviewから渡される変数を使えるようにする

ローカル変数を使う

@ を外す

[部分テンプレートを呼び出す]

元のviewfileに

<%= render [部分テンプレートfile指定],[ローカル変数]:[渡す値] %>

<%= render 'post_images/list', post_images: @post_images %> [呼び出す際]

render使用

app/view よりしたのパスを書く

アンダースコア 拡張子省略

ローカル変数に渡すインスタント変数を指定する

サーバーが立ち上がらない

3000 error サーバー立ち上がらない ps aux | grep puma

今起動している処理が裏側も表示される

kill -9(強制的) 8862(4けた)

[puma]

railsで記載した内容をウェb上appとして表示されるアプリケーション

ps aux

全ての処理が表示される

ps aux | grep puma

|の前後でコマンドを並列描いている

遷移前のurlで表示変化

Railsで遷移元のURLを取得する方法 参考

request.referer 遷移前のURLを取得するにはrequest.refererを使う。

<% if request.referer&.include?("/*****//") %> #前のページが指定したURLだった場合のリンク先 <% else %> #その他のリンク先 <% end %>

これでユーザ新規登録ページでの変化させる

istrallo][デプロイ][db]本番環境と開発環境で使用するdbが異なる場合の注意点

[結論]

使用するdbが異なる場合、migrationファイル関係などdb関係で予想もしないエラーが発生する場合がある。

[自分のケース: SQLite(開発)=>MySQL(本番)]

[エラーを吐き出す要員]

textのdate型: defualt: ""設定

SQLiteではエラーにはならないが、MySQLだとエラーの原因になる。

[一度データベースに入れた内容と行っている場合:テーブルを削除したなど]

いくらcurrentで rails db:migrateしてもだめ

dbをリセットしてからdb:create db:migrateする

railsで画像を利用する際にimage_tagを用いるべき理由

[やり方]

  • html:

  • rails:(dbを用いない場合)

    <%= image_tag %>

  • rails:(dbに登録:gem refile使用)

    <%= attachment_image_tag インスタンス変数(例: @store), :カラム名(例: image), fallback:(画像がdbから持ってこれないなど表示されない場合) "~~.jpg"(画像名), size: "50x50"(cssで設定した方が好ましい) %>

注意:もしhtmlのimg要素を用いて表示されない場合もあるのでrailsタグを用いる方が好ましい。

[背景画像]

  • ~~.erb:(各種view)

  • css:

    .box1 { background-image: image-url("xxxxxxx.jpg"[画像までのパス:railsではimages/フォルダにあるファイル名のみ記載すれば良い]); background-size: cover; }

  • 注意: デプロイを考慮し

    background-image: url("xxxxxxx.jpg");の記載の仕方を一部変更

入力フォームを介さずにdbにdateを入れる方法

[結論]

  1. db/seedのファイルに入れたい値を記入する[テーブルに初期データを記入する]
  2. $ rake db:migrate
  3. rails c してmodelのカラムを確認すると存在する

[やり方]

モデル名.create(:カラム名 => 値, :カラム名: => 値)
# 一つのテーブルに1レコードを記入する

[大量のデータの追加]

回数.times do |no|
    モデル名.create(:カラム名 => "値 #(no)")
end

[参考サイト]

rake db:seedを使った初期データの投入