Rails + Facebox + Authlogic - come?
-
25-09-2019 - |
Domanda
sul mio sito web voglio avere form di login / registrazione nella finestra modale fatto utilizzando Facebox (jQuery plugin). Che cosa è meglio:
- Creare vista con un metodo e modello che ha forma e si riferiscono Facebox questo punto di vista.
- Crea file HTML statico nella directory pubblica e fare riferimento Facebox a questa pagina statica.
Quello che voglio ottenere è:
- Facile verifica (come "nome utente già preso", "conferma password non corrisponde password" e cose del genere).
- Facile inviare e reindirizzamento
Sono nuovo di Rails, so solo su forme di verifica in Django, quindi per Django avrei probabilmente scegliere l'opzione 1, ma potrebbe essere un'altra cosa in Ruby.
Soluzione
Se si desidera che la verifica per tornare alla pagina di registrazione, si dovrebbe rendere una pagina dinamica.
L'altro problema con una pagina statica nella directory pubblica è che il vostro link diventiamo tutti hardcoded, quindi se l'applicazione sempre vive la radice del dominio (cioè example.com/app) i link a quel file statici potrebbe essere sbagliato.
Inoltre, se hai bisogno di spostare le immagini su un host diverso, si perdono i vantaggi della image_tag.
Solo utilizzare le risorse statiche se sai le cose non cambieranno ed hai bisogno di velocità. Se le pagine dinamiche sono troppo lenti, è possibile memorizzare nella cache, o si potrebbe fare qualcosa di sbagliato.
UPDATE: (per affrontare il primo commento)
Non è possibile utilizzare le funzioni di rotaie per costruire gli URL quando si è nella cartella pubblica. Se avete bisogno di rotaie URL generati in javascript, grilletto loro da un rotaie visualizzare la pagina. In generale, farò il seguente:
In application.html.erb nel tag head:
<%= yield :headScripting %>
Poi, nella pagina di visualizzazione che sta provocando il javascript:
<% content_for :headScripting do %>
jQuery().ready(function() {
jQuery("#placeholder").load("<%= summary_model_path(@model) %>");
});
<% end %>
Che sarebbe caricare il testo di sintesi dal summary
modello di azione del controller. Ciò probabilmente render :text => "summary"
o render :layout => false
a seconda delle esigenze