[[Ruby/Ruby on Rails]]

#contents

*はじめに [#i92033d1]

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

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

*helper_methodを使う方法 [#l015c475]

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

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

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

#code(ruby){{
#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:"2009-11-28 (Sat) 17:30:28" REFERER:"http://tobysoft.net/wiki/index.php?cmd=replaceplugin" USER_AGENT:"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)"
Front page   Edit Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes