Pergunta

No meu site, quero ter formulário de login/registro na janela modal feita usando o FaceBox (jQuery Plugin). O que é melhor:

  1. Crie uma visualização com um método e modelo que tenha formado e consulte o Facebox para essa visualização.
  2. Crie arquivo HTML estático no diretório público e consulte o FaceBox para esta página estática.

O que eu quero alcançar é:

  • Verificação fácil (como "Nome do usuário já tomado", "confirmação de senha não corresponde à senha" e coisas assim).
  • Enviar e redirecionar fácil

Eu sou novo no Rails, apenas conheço a verificação de formulários em Django, então, para o Django, provavelmente escolheria a opção 1, mas pode ser outra coisa em Ruby.

Foi útil?

Solução

Se você deseja que a verificação volte à página de registro, faça uma página dinâmica.

O outro problema com uma página estática no diretório público é que todos os seus links se tornam codificados; portanto, se você o aplicativo vive da raiz do domínio (ou seja, exemplo.com/app), os links nesse arquivo estático podem estar errado.

Além disso, se você precisar mover suas imagens para um host diferente, perderá as vantagens do imagem_tag.

Use apenas recursos estáticos se você souber que as coisas não mudarão e você precisará de velocidade. Se suas páginas dinâmicas forem muito lentas, você pode cache -as ou pode estar fazendo algo errado.

ATUALIZAR: (para abordar o primeiro comentário)

Você não pode usar as funções do Rails para construir seus URLs quando estiver na pasta pública. Se você precisar de URLs gerados por trilhos em seu JavaScript, acione -os de uma página de exibição de trilhos. Geralmente, farei o seguinte:

Em Application.html.erb na etiqueta da cabeça:

<%= yield :headScripting %>

Então, na página de exibição que está acionando o JavaScript:

<% content_for :headScripting do %>
    jQuery().ready(function() {
        jQuery("#placeholder").load("<%= summary_model_path(@model) %>");
    });
<% end %>

Isso carregaria o texto resumido da ação do controlador do modelo summary. Isso provavelmente seria render :text => "summary" ou render :layout => false Dependendo das suas necessidades

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top