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
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
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
Non ho incluso ApplicationHelper, ma quello che hai detto mi ha permesso di creare un shared.rb in app/controller/ – DerNalia
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.
È 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.
questo è un ottimo approccio! + 500 –
qui è molto buono esempio
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/
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 –