2010-05-13 4 views

Répondre

10

Afin d'utiliser les mêmes méthodes dans le contrôleur et des vues Ajouter vous méthode application_controller.rb et rendre les méthodes helper.

Par exemple

class ApplicationController < ActionController::Base 
    helper :all # include all helpers, all the time 
    #protect_from_forgery # See ActionController::RequestForgeryProtection for details 
    helper_method :current_user 

    def current_user 
    session[:user] 
    end 

end 

Maintenant, vous pouvez utiliser la méthode current_user dans les deux contrôleurs & vues

+0

Merci pour la réponse rapide! :) –

+0

Une note à propos de cet exemple: puisque 'helper: all' définit toutes les méthodes publiques comme helpers, il n'y a pas besoin de' helper: all' et 'helper_method: current_user'. C'est une proposition soit/soit. – Pierre

4

J'utilise une solution suivante. Parce que je pense que les méthodes d'aide devraient être stockées dans un module d'aide approprié.

module TestHelper 
    def my_helper_method 
    #something 
    end 
end 


class SomeController < ApplicationController 
    def index 
    template.my_helper_method 
    end 
end 
+0

Je préfère cette solution à celle choisie. Mais, changement mineur avec les derniers rails: SO http://stackoverflow.com/questions/3300582/rails-3-template-variable-inside-controllers-is-nil vous devez utiliser view_context au lieu de @template. –

Questions connexes