Como mostrar o conteúdo do formulário que acabou de inserir na opção ": confirm =>" no rubi nos trilhos
-
18-09-2019 - |
Pergunta
Estou tentando ter uma maneira de confirmar as informações inseridas antes de realmente salvá -las no banco de dados
Considerava fazer uma página de confirmação individual, conforme discutido aqui
Ruby on Rails: Página de confirmação para a criação de objetos ActiveRecord
No entanto, meu formulário inclui um arquivo anexado usando o PaperClip, o que torna mais um aborrecimento para implementar.
Pensei em apenas ter um: confirmar => pop -up que mostraria as informações que o usuário acabou de inserir.
O problema é como mostrar as informações que o usuário acabou de entrar, por exemplo
<% form_for @entry, :html => { :multipart => true } do |f| %>
<%= f.error_messages %>
<%= f.label :name %><br />
<%= f.text_field :name %>
<%= f.label :file %><br />
<%= f.file_field :file %>
<%= f.submit 'Create', :confirm => "????? " %>
<% end %>
Solução
Dado que seus anexos de carregamento, pode não ser uma má idéia renderizar uma visão de estadiamento, incluindo informações derivadas do anexo, permitindo que o usuário confirme. Como exibir o arquivo, se for uma imagem, ou o primeiro parágrafo de texto, se for um arquivo de texto, etc.
Vai demorar mais trabalho do que apenas adicionar um pop -up de confirmação, mas sinto que a experiência aprimorada do usuário vale o esforço extra.
Não estou familiarizado com a maneira como o clipe de papel funciona. Então, você está principalmente por conta própria pelos detalhes íntimos.
Você provavelmente terá que criar um registro antes que a visualização de estadiamento possa ser renderizada com a amostra do arquivo carregado. Para realizar que eu configurei uma coluna "ativa" no modelo em questão, que o padrão é false.
O uso seria algo assim:
- Usuário complica novo formulário.
- O anexo é atualizado e os registros são salvos, com o campo ativo definido como false.
- Redirecionado para a página de confirmação que é essencialmente a página de show com um link de confirmar/botão e um link/botão de cancelar
uma. Quando o link de confirmar o link/botão é clicado, ele envia uma solicitação ao controlador que aciona a ação de atualização nessa configuração de registro ativa para true.
b. Quando o link/botão cancelar é clicado, ele envia uma solicitação ao controlador, desencadeando a ação de destruição neste registro.
Tudo o que resta é configurar uma tarefa recorrente para remover objetos inativos e foram criados o suficiente para que seja seguro assumir que o usuário acabou de encerrar a sessão do navegador.
Outras dicas
A opção Confirmar para o método de envio do Rails pode obter apenas um valor de texto.
Se você deseja gerar dinamicamente o texto Confirmar, uma maneira de fazer isso é escrever sua própria tag HTML e escrever JavaScript personalizado para analisar os campos que deseja usar em seu texto gerado.
Ou você pode usar o método de envio do Rails, mas use algo como o jQuery para adicionar um manipulador de eventos a ele.
Eu apenas jogaria meu JS em um manipulador OnClick. Isso é tudo o que faz.
<%= f.submit 'Create', :onclick => "confirm('Name is ' + $F('entry_name'));" %>
(Observe, não testou isso, mas parece perto. Confirmar é uma função JS central, não parte de qualquer lib)