[[Ruby/Ruby on Rails]]

#contents

*はじめに [#i92033d1]

コントローラー内のメソッドをビュー内から呼びたい時があります。

例えば、ログインしているか?どうかのメソッド。
単発のヘルパーにもできないしなー、という場合。

*helper_methodを使う方法 [#l015c475]

簡単そうな方法は、helper_method を使う方法です。

以下、Railsのドキュメントのhelper_methodの項目から抜粋(一部改変)。
helper_method にメソッドと同名のシンボルを渡しています。

※危なっかしいので、該当メソッドをprivateにしておきました

#geshi(ruby){{
  class ApplicationController < ActionController::Base
    helper_method :current_user, :logged_in?

  private
    def current_user
      @current_user ||= User.find_by_id(session[:user])
    end

     def logged_in?
       current_user != nil
     end
  end
}}

ビュー内では、ヘルパーみたいに使えます。
ビュー内では、ヘルパーみたいに使えます。ま

 <% if logged_in? -%>Welcome, <%= current_user.name %><% end -%>


----
#pcomment(,reply)

TIME:"2019-02-06 (Wed) 16:55:32" REFERER:"http://tobysoft.net/wiki/index.php?cmd=edit&amp;page=Ruby%2FRuby%20on%20Rails%2F%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%E9%A1%BC%A4%CE%A5%E1%A5%BD%A5%C3%A5%C9%A4%F2%A5%D3%A5%E5%A1%BC%A4%AB%A4%E9%B8%C6%A4%D3%BD%D0%A4%B9%CA%FD%CB%A1&amp;id=l015c475" USER_AGENT:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
Front page   Edit Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes