Como mostrar o conteúdo do formulário que acabou de inserir na opção ": confirm =>" no rubi nos trilhos

StackOverflow https://stackoverflow.com/questions/1879344

  •  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 %>
Foi útil?

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:

  1. Usuário complica novo formulário.
  2. O anexo é atualizado e os registros são salvos, com o campo ativo definido como false.
  3. 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
  4. 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)

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