2010-06-17 10 views
16

Come si configura un metodo che desidero accessibile da tutti i controller?Ruby on Rails: metodo Global Helper per tutti i controller

Attaccando il metodo in application_helper rende solo più a disposizione i punti di vista

+0

Ecco un altro esempio: http://stackoverflow.com/questions/1179865/why-are-all-rails- helpers-available-to-all-views-all-the-time-is-there-a-way-t –

risposta

14

Puoi include ApplicationHelper nel vostro controller (o ApplicationController base) per rendere i metodi di supporto disponibili.

È possibile anche includere la seguente riga nel ApplicationController per includere tutti i collaboratori:

helper :all
+0

Non ho incluso ApplicationHelper, ma quello che hai detto mi ha permesso di creare un shared.rb in app/controller/ – DerNalia

7

Stick in lib. Gli helper sono pensati per essere usati nelle viste; se si dispone di librerie specifiche per applicazione (e per "librerie" si intende qualsiasi codice utilizzato dall'applicazione, e per "specifica dell'applicazione" qualsiasi cosa che non appartiene a vendor), lib è il posto dove andare.

34

È possibile aggiungere il metodo a ApplicationController. Tutti gli altri controller sottoclasse ApplicationController, quindi sarà in grado di chiamare il metodo.

Si desidera impostare il metodo protected in modo che sia visibile solo per sottoclassi e non sia disponibile come azione accessibile dal Web.

+0

questo è un ottimo approccio! + 500 –

0

in Rails 3 è possibile utilizzare: l'oggetto view_context nel vostro controller per accedere ai metodi helper vista. Ad esempio,

class ApplicationController < ActionController::Base 
    def some_method 
    view_context.some_view_helper_method 
    end 
end 

module ApplicationHelper 
    def some_view_helper_method 
    end 
end 

Dai un'occhiata a questo: http://wowkhmer.com/2011/09/09/use-view-helper-methods-in-rails-3-controller/

Problemi correlati