いや〜〜知らなかった。。
本当に知らなかった。。
今まで「helperってなんだろう?viewに変数とか渡せるの?」とか疑問に思っており、
自分の中では「controllerにたくさんメソッド書くと汚くなるから、可読性をあげるためにメソッドを変わりに書く場所」と勝手に解釈していましたが。
なんと今日、その答えがわかりました。
そもそも
solidusの実装で詰まってたんですよね。
何に詰まっていたかというと、
before_actionで読み込んだメソッドをviewで呼ぼうとしたときに
Error : undefined method
が出てしまう。。
binding.pryを挟むとコンソール上では呼べるのになぜ呼べない????
ここで詰まってました。
こういうときのために、やっぱりメンターがほしいなって思って、
先月からMENTA経由でメンターさんと契約してたんですよね。
そこで質問して言われたのが
「メソッドはViewでは呼べないよ!」
「Helperに書いてたら別だけどね。」
えーーーーっ!!!!そうなの!?!
まさかこんなところで長年の疑問が晴れるとは…(Rails始めて1年経ってない
いやあ〜〜〜〜マジか。これ、Tutorial5周ほどやってましたがそこでもわからなかったんですよね。
てなわけで
Controller
↓
↓
↓
Helper
↓
↓
↓
View
メソッドに関して言えばこういうことですよね??
以下はメンターさんに聞いた話なんですが、
Viewでメソッドを呼んだり、メソッドの戻り値を使いたい場合、
1. メソッドをHelperに書く
もしくは、
2. Controllerでメソッドの戻り値を@ローカル変数に入れ、viewにわたす
で解決できるらしいです。
自分は2.の方法を使って解決しました。
いやーーーマジか。。
いやーーー。。
ちょっと衝撃でした。。
聞くだけだと超基本的なことなのに、今までそこすらわかっていなかったなんて。。
落ち込むことはないですが、ちょっとショックですね笑笑
けど今日知れたので、めっちゃラッキーでした。本当に良かったです。
しかし、、、本当にメンターって重要ですねえ。(twitterにも書いた
毎月お金を払う価値は十二分にありますね。
もっとがんばろー。