Wie übergibt man beliebige (nicht-Modell-Attribut -) Werte, um eine rails-action?

Ich habe eine unidirektionale Beziehung-Modell zwischen Benutzer und Benutzerinnen (viele Beziehungen), das hält die ids der zwei Benutzer zusammen mit dem Benutzer ein Spitzname für Benutzer b. Ich möchte ein Formular verwenden, um Benutzern zu ermöglichen, zu passieren, in einer e-mail-Adresse von einem anderen Benutzer und der nickname. Wenn ein Benutzer mit dieser E-Mail vorhanden ist, dann erstellen Sie eine Beziehung zwischen den Nutzern. Wenn kein Benutzer entspricht, erstellen Sie eine neue 'phantom' Benutzer mit dieser E-Mail und erstellen Sie dann die Beziehung.

Ich bin relativ neu auf Schienen, und die zunächst naiv versucht, mit dem basic:

= form_for @relationship do |f|
    = f.label :email
    = f.text_field :email
    = f.label :nickname, "Nickname"
    = f.text_field :nickname
    = f.submit "Submit", class: "btn btn-large btn-primary"

Dies schlägt fehl, da die Beziehung Modell nicht enthalten eine E-Mail-Attribut. Ich habe dann versucht die folgenden, zu denken, es könnte funktionieren, weil es nicht direkt auf den relationship-Modell.

= form_tag :controller => "relationships", :action => "create" do
    = label :email        
    = text_field :email
    = label :nickname, "Nickname"
    = text_field :nickname
    = submit "Submit", class: "btn btn-large btn-primary"

Aber das wirft einen Fehler "falsche Anzahl von Argumenten (1 für 2)"

Ich könnte hinzufügen eines E-Mail-Feld, um die relationship-Modell, aber es ist nicht erforderlich, abgesehen von, wenn ich es benutzen will, um sich die gewünschten Benutzer. Mein plan war zu verwenden, die E-Mail und nickname übergebenen Werte an die create-action in der Beziehung-controller, um entweder die Beziehung oder einen neuen Benutzer erstellen und dann die Beziehung, je nach Fall. Also, wie kann ich pass beliebige Werte zu einer controller-action?

InformationsquelleAutor Mischawaka | 2012-07-14
Schreibe einen Kommentar