Rails: Parameter übergeben mit render: action?
Ich habe ein Formular, das zeigt sich unterschiedlich, je nach parameter es aufgerufen wurde, mit.
Ex.
testsite.local/users/new?type=client
Also, wenn type
war a
oder b
die form würde die Anzeige den verschiedenen Feldern.
Mein problem ist, wenn das Formular falsch ausgefüllt, weil wenn der Benutzer konnte nicht gespeichert werden corrently, macht es das Formular mit den Standard-Fehlermeldungen, aber auch ohne meine parameter.
testsite.local/users/new
Wie kann ich rufen Sie meine render
Aktion und übergeben, was dieser parameter gesetzt ist? Also, ich kann noch immer meine eingebauten Fehler Meldungen darüber, warum die form nicht sein konnte sumbitted richtig habe UND es die richtige form?
Hier mein create
Aktion:
def create
@user = User.new(params[:user])
roles = params[:user][:assigned_roles]
if @user.save
update_user_roles(@user,roles)
if current_user.is_admin_or_root?
flash[:message] = "User \"#{@user.username}\" created."
redirect_to users_path
else
flash[:message] = "Congrats! You're now registered!"
redirect_to app_path
end
else
render :action => 'new'
end
end
InformationsquelleAutor der Frage neezer | 2009-10-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als aufgeklärt von einem anderen Benutzer Beantwortung meiner anderen stellt sich die Frage,hier ist, was ich wurde nach:
... was bewahrt die parameter
:type
durch jede neue render-Aktion (vorausgesetzt ich habe es richtig definiert, die in meinem controller).InformationsquelleAutor der Antwort neezer
Gibt es zwei Möglichkeiten, es zu tun.
Entweder ein hidden-Feld oder einen zusätzlichen parameter an die form_for
Hinzufügen von versteckten Feld im Formular mit den benannten Typ und legen Sie es gleich params[:type] dieser wird die Erhaltung der Art auf den Rendern, wenn die Validierung fehlschlägt.
Anzeigen-code:
Hinzufügen einer zusätzlichen Parameter die form:
Entweder man wird tun, was Sie wollen.
InformationsquelleAutor der Antwort EmFi
Extrakt für Schienen-Führungen
Glaube ich nicht, dass
new?type=client
verwendet wird, um das setup eine Art von Variablen, die in die neue Aktion?Und die variable wird später in Ihre neuen.html-Code.erb?
Dann müssen Sie ein wenig ändern bit-erstellen Sie Ihre Aktion wie folgt:
InformationsquelleAutor der Antwort Aurélien Bottazini
Sie konnte immer erzwingen, indem Sie:
in Ihre neue action im controller. Wenn type nicht gesetzt ist, dann wird es Standard-client. Die URL wird nicht angezeigt dies jedoch.
InformationsquelleAutor der Antwort Ryan Bigg