LoginSignup
4
1

More than 5 years have passed since last update.

【Rails5】helperって何なのかが今頃わかったってだけの記事

Last updated at Posted at 2019-01-04

いや〜〜知らなかった。。

本当に知らなかった。。

今まで「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にも書いた

毎月お金を払う価値は十二分にありますね。

もっとがんばろー。


4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1