11/16にUserとShipping_addressのリレーションをhas many/belong_toで作成したので、今度はそれをViewに反映させていきたい。
UserとShipping_addressが紐づいているときはURLはusers/1/shipping_addresses/3みたいな形になるので、まずrouteをネストさせる。
単体でshipping_addressを編集するときも考慮し、ネストしないshipping_addressも記述。
まずはindexアクションに飛ばすためにpathを決める。
※showやedit actionにアクセスする為のパス(member_pathやedit_member_path)のような、個別のリソースを扱うアクションへのパスは引数にモデルオブジェクトを渡す。
これでIndexアクションへのパスが通った。
今度はshipping_address.controllerのindex actionをいじっていく。
Indexアクションでやりたいことは、
1.どのユーザーでログインしているのか?
2.Shipping_addressオブジェクトを丸ごと取り出す。
どうも.findメソッドがダメらしい....?
下記記事をもとに@user = User.find_by_id(params[:user_id])と記載したらuser_idを取得してくれた。
参照:https://railsforum.com/topic/4070-cannot-find-user-without-id/
そして次はshipping_addressesメソッドって何やねん!っていうエラー
Question1:パスに渡す引数はどんなものがある?引数の役割は?
Question2:.findと.find_by_idの違いって何?
Question2の答え:違いはRecordが見つからなかった場合の挙動。
.find=>例外を発生させる。 find_by_id=>nilを返す。
参照:http://higelog.brassworks.jp/?p=71
ResourcesとResourceの違いを理解する。
current_userみたいにUserが誰かわかっている場合はresouce (ex:3000/user/shipping_addresses)
ただ他のuserのshipping_addressを見たい場合はuser/user_id/shipping_address/shipping_address_idみたいになる。
(adminから特定のユーザーのshipping_addressを見たい場合なんかはそう.from who's perspectiveかを基準にsettingする)