imgaeの修正
<style>
.img01.waku03 {
border: 10px solid #fff;
box-shadow: 0 0 0 1px #ccc,1px 3px 8px 0 rgba(40,40,40,0.3);
}
.waku03.rotate01 {
-moz-transform:rotate(-3deg);
-webkit-transform:rotate(-3deg);
-ms-transform:rotate(-3deg);
transform:rotate(-3deg);
}
.waku03.rotate02 {
-moz-transform:rotate(1deg);
-webkit-transform:rotate(1deg);
-ms-transform:rotate(1deg);
transform:rotate(1deg);
}
</style>
<p class="img01 waku03 shadow rotate01"><img src="photo.jpg" width="500" height="500" alt="ブランケットを羽織った女性" /></p>
rails fontawesomeの導入
fontawesomeのgemのインストールをする
続き④
1.アソシエーションの使い方
$ r = restaurant.first(このレストラン(今回は最初の)を定義)
$ r.user.comment.menu (このレストランのコメントの中のmenu)
ex.お気に入りの場合
$ r.favorite_users[0].name(このレストランの最初のお気に入りした人)
$ r.favorite_users.first.name(同上)
ex.アソシエーションにsource: :userを書いてない場合
$ r.favorites.map{ |favorite| favorite.user.name }
(mapで配列で入ってくる)
※has_manyメソッドの変数は配列になっている
2. find_byとfindとwhereの違い
find(100) → id:100がない場合はエラーになる
find_by(id: :100) → 100がなくても「nil」が返ってくる
where(id: :100 ) → 配列で返ってくる。なので何人も表示できる
上記により、findの変数は単数に、whereの変数は複数にするべき。
3.newとbuildの使い分け方
new: クラスとインスタンスでオブジェクトを作るとき
build: アソシエーションでオブジェクトを作るとき
rails idの紐づけ方 続き②
rails c
$ Restaurant.find_by(name: "マック")
>マックの値が出る
$ mkd = Restaurant.find_by(name: "マック")
マックを変数mkdに入れる
$ mkd.comments.new
>「変数。アソシエーション名.new」で新しくオブジェクトができる
その際、子要素として「restaurant_id」だけがオブジェクトに入る
rails idの紐づけ方
①templateはview自体にある。
controllerのindexアクション内に「render "indux"」を入れた場合、viewの「indux.html.erb」がindexメソッドがend後にrenderされる。
各コントローラーのメソッドはendで一旦終わり、各ヴューがrenderされる。
findメソッドは「探してくる」ではなく「その引数に紐づいた情報を持ってくる」。
「find(直接数字) 又は find_by(:キー名)」(id以外で探すときはfind_by)
②ページの推移を追っていく
前の画面で送った情報は次の画面で一旦消えてしまう。
なので、情報を送る作業が必要となる。
パラメーターとして送っているので、params[: キー名]で受け取る。
③実際の解決法
1.comments_indexのVでnewを押すときにパラメーターを送る
2.comments_newのCでパラメーターを受け取る。
もしくは、アソシエーションでidを受け取ったまま、comments.newする。「変数.アソシエーション名.new」でインスタンスからnew出来る。
(変数の子のcommentsとしてnewされる)
restaurant_idの子としてcommentをするには方法2つ
index
rails 基礎
・rails はデフォルトでget postとdeleteはあえて書くこと
・検証ツールでRubyコードがどのように変わるか確認する
・get: 受け取るだけ
・post: 作成して送る
@restaurant = Restaurant(レストランモデルのクラス).new(restaurant_params)
・rails routes
routesで確認して「どのアクション」に送りたいかでget/post等のメソッドを判断する
(restaurantをshowに送りたいときはgetで送る。)
・@restaurant = Restaurant.find(params[:id])
findで、もともとあるデータからid値に紐づくデータをRestrantモデルのクラスを通して、インスタンス変数に入れている
paramsは(ログで確認)ハッシュで受け取っている。