2011-01-03 4 views
0

Dies ist, was der Rails Code wie folgt aussieht:Wie verwende ich AJAX, um meine Anmeldungs- und Registrierungsseite in Rails 3 gleich zu machen?

<div id="sign_in"> 

<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %> 
     <%= f.text_field :f_name, :value => "First Name", :class => "clearField curved" %><br /> 
     <%= f.text_field :l_name, :value => "Last Name", :class => "clearField curved" %><br /> 
     <%= f.text_field :email, :value => "Email Address", :class => "clearField curved" %><br /> 
     <%= f.text_field :username, :value => "Username", :class => "clearField curved" %><br /> 
     <%= f.password_field :password, :value => "Password", :class => "clearField curved" %><br /> 
     <%= f.password_field :password_confirmation, :value => "Password", :class => "clearField curved" %><br /> 

    <div id="login_buttons"> 
     <%= f.submit "Sign in", :id => "login", :value => "Log In", :class => "curved" %> 
     <%= f.submit "Sign in", :id => "register", :value => "Register", :class => "curved" %> 

    </div> 
<% end %> 

Dies ist, was die Umsetzung wie ist: http://jsfiddle.net/Chandu/AdQfB/11/

Was würde ich gerne sehen, wenn sie auf ‚Login‘ klicken oder "Registrieren" Sie irgendwo auf der Website ... es bringt sie auf eine Seite, die zwei Zustände hat.

So zum Beispiel würde es gehen oder myapp.com/signin#register oder etwas in der Art myapp.com/signin#login. Es muss nicht GENAU sein, aber Sie bekommen die Idee. Auf diese Weise kann ich direkt hotlink myapp.com/signin#register und sie würden das Anmeldeformular zuerst sehen - anstatt die Login-Formular & umgekehrt.

Auch wenn sie auf dieser Seite sind, und sie klicken auf "Login" - wenn die anderen Felder nicht verfügbar sind, sind sie dann angemeldet. Wenn sie jedoch auf "Registrieren" klicken und die anderen Felder erscheinen, füllen sie sich die Informationen aus und dann sind sie erfolgreich registriert, wenn sie auf "Senden" klicken.

Wie erreiche ich das?

Edit 1: Wer noch keine Lösungen haben?

Danke.

Antwort

1

Ich bin nicht sicher, ob jQuery eine integrierte Funktion für sie hat, aber mit einfacher JS (können Sie jQuery und JS mischen):

window.location.hash 

alles nach dem Raute (#) angezeigt werden kann.

In Ihrem Controller anmelden, könnten Sie so etwas wie:

$(function(){}); 
switch(window.location.hash){ 
    case 'login': 
    show_login_form(); 
    break; 
    case 'register': 
    show_register_form(); 
    break; 
} 
+0

Wie kann ich zwar den Hash-Set? Sagen wir zum Beispiel, dass ich möchte, wenn der Login-Button zum Laden von 'show_login_form()' gedrückt wird, aber ich möchte auch '#login' zur URL hinzufügen. Wie mache ich das? Gibt es einen nativen Weg, es mit jQuery zu machen oder muss ich ein Plugin haben? – marcamillion

+0

Vielen Dank für diese Antwort. Das hat aber nicht für mich funktioniert. Ich musste 'if (window.location.hash == '#login') {show_login_form();}' verwenden, damit es für mich funktioniert. Aber deine Antwort brachte mich dazu, diesen Pfad zu betrachten. – marcamillion

+0

Fügen Sie #login hinzu, machen Sie die href attr auf einem Tag href = "# login" – sethvargo

Verwandte Themen