2011-01-04 25 views
0

Ich suche nach einer Möglichkeit, ein Kontaktformular im Anwendungslayout zu haben und es auf allen Seiten anzuzeigen.Schienen bilden mehrere Ansichten?

Im Idealfall würde Sie mag nur ein tun

form_for @contact_us 

Ich habe versucht, das Instanz-Variable in der Anwendungssteuerung zu schaffen, aber es funktioniert nicht in ihrem Umfang zu sein scheint, wenn die Layouts Lasten .. (funktioniert das Layout-Last vor dem Ergebnis der Aktion ??)

Ich denke, ID mit einem form_tag zu begleichen.

Was ist der übliche Weg, diese Art Sache zu tun?

Danke!

Antwort

1

Sie können eine teilweise verwenden. Setzen Sie den Formularcode (verwenden Sie form_tag) in die partielle und rendern Sie die partielle im Layout.

Mehr über Teiltöne here.

1

Welche Daten weisen Sie @contact_us zu? Sie können die Verwendung von form_tag anstelle von form_for in Erwägung ziehen, wenn für Ihr Formular keine Ressource erforderlich ist.

einrichten, was Sie in Ihrer Anwendung Controller benötigen ...

before_filter :prepare_contact_form 

def prepare_contact_form 
    @contact_us = "The stuff your form needs" 
end 

eine Teilansicht Formular enthält, erstellen. Unter der Annahme, form_tag Ihre Bedürfnissen entspricht, aus Mangel an mehr Informationen ...

<!-- app/views/_contact_form.html.erb --> 
<%= form_tag "/contact_us" do %> 
    <%= @contact_us %> 
    <%= text_field_tag :from_email %> 
    <%= text_field_tag :message %> 
    <%= submit_tag 'Submit' %> 
<% end %> 

die teilweise in der Anwendung Layout Render ...

<!-- app/views/layouts/application.html.erb --> 
render :partial => "contact_form" 

dann die Anforderung behandeln in welcher auch immer Controller-Aktion /contact_us wird geroutet .

Verwandte Themen