2016-04-18 10 views
0

Also nach einiger Zeit und ein bisschen Kopfschmerzen. Ich war in der Lage, eine Rails versionierte Form zu erhalten. Obwohl ich in der Lage war, es zum Laufen zu bringen, weiß ich nicht, ob es die beste Praxis ist, weil es sich ein wenig anfühlt. Ich habe eine Website mit einem Anmeldeformular auf der Zielseite. Die Zielseite ist static_pages#home. Ich habe für meine Benutzer einen Controller _new.html.erb erstellt, der auf meiner Zielseite enthalten ist. Hier ist das Formular, das ich habe:Handling Rails form_for in einer Ansicht, die nicht mit dem form_for Controller verbunden ist.

Es ist ein wenig unordentlich, weil ich eine Menge Styling hinzugefügt habe. Die Sache, auf die ich achten muss, ist, wie ich die form_for präsentiere. Ich habe ihm ein Objekt @user übergeben. Normalerweise würde diese @user in der Users#new Aktion gefunden werden; Allerdings ist die einzige Möglichkeit, dieses Formular ordnungsgemäß zu funktionieren, die Static_pages#home behandeln, indem Sie @user = User.new festlegen. Das scheint falsch zu sein, aber ich finde keinen besseren Weg, dies zu tun. Am Anfang möchte ich nur dieses Formular haben, wenn es eingereicht wird, drücken Sie die Users#create Aktion. Ich habe versucht, form_for zu übergeben (: Benutzer,: Benutzer, "/ Benutzer"), aber wenn ich dies versuche, versucht es, eine Static_pages#create Aktion zu treffen.

Alles in allem dreht sich meine Frage darum, ob dies ein korrekter Umgang ist, und wenn nicht, was wäre ein geeigneterer Weg. Wieder konnte ich das zur Arbeit bringen, aber das ist, indem ich @user = User.new jedes Mal, wenn die Static_pages#home, meine Landingpage, besucht wird. Vielen Dank für Ihre Zeit bei der Beantwortung dieser Frage.

Antwort

0

Das ist ok und vollkommen akzeptabel. Ich wäre sogar versucht, form_for User.new zu schreiben.

Bitte denken Sie daran, dass auf den meisten "realistischen" Seiten mehr als eine Ressource gefunden werden kann. Z.B. ein Login-Formular auf der About-Seite, eine Tag-Cloud auf der Post-Seite, sodass ein Controller möglicherweise mehr als einen Objekttyp abrufen muss.

Wenn Ihre Seite theoretisch aus getrennten/unabhängigen Bereichen besteht (z. B. 1 Bereich = ein Beitrag und seine Kommentare und ein anderer die Liste der neuesten Kommentare), können Sie auch cells verwenden.

+0

Ich würde @ usus = User.new beibehalten, damit das neu instanziierte Objekt referenziert werden kann. – Elvn

+0

Ja, um das MVC-Modell zu erhalten, möchte ich meiner Meinung nach von "User.new" fern bleiben. Bis jetzt jedoch ein guter Rat, danke. – Nappstir