Ruby on Rails 雑記帳 ITかあさん

ITかあさん

RailsでControllerの名称とは違うHelperをviewで使いたい

RailsでControllerの名称とは違うHelperをviewで使いたい

悩んで悩んで完全に沼にハマったのでメモ。
RailsのController内でHelperを呼びたい時はこんなカンジで、Controller名と違う名称のHelperを呼べますが、これではusers/show.slim でPostsHelperのメソッドを呼ぶことができません。

  class UsersController < ApplicationControlelr
    include UsersHelper
    include PostsHelper

Controllerとは違う名称のHelperを呼ぶ時はこう

  class UsersController < ApplicationControlelr
    include UsersHelper
    helper PostsHelper

で、それでもなぜかundefined local variable or methodがviewで発生するなあ、、なぜかなあーと頭かかえてたらrender partial で部分テンプレートの中身だったので呼べるはずがなかった。。locals にメソッド書いて渡してあげればよかっただけでした。。

まだRails始めたばっかりでしょうもないことでハマるなあ。。

複数ActiveRecord mergeメソッドでorder by

Post.joins(:entries).merge(Entry.order("entries.id DESC"))

mergeメソッドの中で orderの基準となるフィールド名を指定するんだけど、”id”はどちらのActiveRecord (Model)でもつかっている場合、どちらのActiveRecordのidか不明のため、その場合はテーブル名と合わせて指定する必要がある。(まあ、普通そうだよね。)