Ich habe versucht, rendern_to meinen Kopf zu bekommen, aber ich hatte nicht viel Erfolg.
Im Wesentlichen habe ich Controller-Methoden:
%Vor%Was ich nicht herausfinden kann, ist, wie ich das erreichen kann. Ursprünglich wollte ich nur die Datei first.html.erb rendern, aber das schien auch nicht zu funktionieren.
Danke
Edit: Ich schätze die Antworten, die ich erhalten habe, aber alle tendieren dazu, die render-Methode oder redirect_to zu vermeiden. Ist es grundsätzlich so, dass man keine Variablen von Controller zu Controller weitergeben kann? Ich muss denken, dass es einen Weg gibt, aber ich kann es nicht finden.
Es ist keine gute Idee, das Objekt einer Konstante zuzuordnen. Wahr, dies ist in einem globalen Bereich, aber es ist global für jeden, also wird jeder andere Benutzer, der zu dieser Anfrage geht, dieses Objekt bekommen. Dafür gibt es ein paar Lösungen.
Ich gehe davon aus, dass Sie ein mehrstufiges Formular haben, das Sie durchlaufen. In diesem Fall können Sie die festgelegten Attribute als versteckte Felder übergeben.
%Vor% Wenn es viele Felder gibt, kann das mühsam sein, deshalb sollten Sie den params[...]
Hash durchlaufen oder column_names -Methode, um zu ermitteln, welche Attribute übergeben werden sollen.
Alternativ können Sie Attribute in der Sitzung speichern.
%Vor%Drittens, wie Paul Keeble erwähnt hat, können Sie das Modell in der Datenbank speichern, aber als unvollständig markieren. Vielleicht möchten Sie dafür einen Zustandsautomaten verwenden.
Zum Schluss möchten Sie vielleicht das Plug-In für Acts als Assistenten ansehen.
Normalerweise lassen meine Controller die Aktionen des anderen nicht aufrufen. Wenn Sie einen Bezeichner haben, der mit einem Großbuchstaben beginnt, in Ruby, der eine Konstante ist. Wenn Sie eine Instanzvariable haben möchten, beginnen Sie mit @.
%Vor%Können Sie erklären, was Ihr Ziel ist?
Haben Sie überlegt, den Flash-Hash zu verwenden? Viele Leute verwenden es nur für Fehlermeldungen und ähnliches, es ist explizit für die Art der vorübergehenden Datenübergabe, die Sie interessieren könnten.
Grundsätzlich gibt die Flash-Methode einen Hash zurück. Jeder Wert, den Sie einem Schlüssel im Hash zuweisen, ist für die nächste Aktion verfügbar, aber dann ist er verschwunden. Also:
%Vor% Weg 3
Serialisieren Sie das Objekt und fügen Sie es irgendwo in das Formular ein Deserialisieren Sie es von den Parametern in der nächsten Anfrage. So können Sie Attribute in der Sitzung speichern.
%Vor%def first @item = Item.new(params[:item]) session[:item_attributes] = @item.attributes end def second @item = Item.new(session[:item_attributes]) @item.attributes = params[:item] end
Weg 5
Sie können den Rails-Cache verwenden.
Weg 6
In einem Aktionsspeicher kann der Wert in der db-Tabelle basierend auf der Sitzungs-ID und anderen Aktionen die Datenbank basierend auf der Sitzungs-ID abrufen.
Weg 7
Weg 8
Von der Aktion, die gesendet wurde, um sie anzuzeigen und erneut von der Ansicht, die an andere Aktionen im Controller gesendet wurde.
Tags und Links ruby-on-rails model-view-controller controller