Dieselbe Instanz-variable für alle actions eines Controllers
Habe ich ein rails-controller mit zwei Aktionen definiert: index
und show
.
Ich habe eine Instanz-variable index
Aktion. Der code ist so etwas wie unten:
def index
@some_instance_variable = foo
end
def show
# some code
end
Wie kann ich auf die @some_instance_variable
im show.html.erb
Vorlage?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sei denn, Sie rendering
show.html.erb
von derindex
Aktion, müssen Sie@some_instance_variable
in der show-action sowie. Wenn eine controller-action aufgerufen wird, ruft es die entsprechende Methode-so der Inhalt Ihrerindex
Methode wird nicht aufgerufen, wenn mit dershow
Aktion.Wenn Sie brauchen
@some_instance_variable
auf die gleiche Sache sowohl in derindex
undshow
Handlungen, die in der richtigen Art und Weise zu definieren, eine andere Methode, genannt, die von beidenindex
undshow
, setzt die Instanz-variable.Machen die
set_up_instance_variable
Methode private verhindert, dass Sie als controller Aktion wenn Sie über wildcard-Routen (dh,match ':controller(/:action(/:id(.:format)))'
)before_action :set_up_instance_variable, only: [:show, :index]
an den controller. Laufen wirdset_up_instance_variable
vor welche Aktionen, die Sie angeben.Können Sie Instanzvariablen definieren, die für mehrere Aktionen über einen vor-filter, z.B.:
Nun
@some_instance_variable
zugänglich sein wird von allen Vorlagen (einschließlich der Teiltöne) gemacht von derindex
odershow
Aktionen.