Pergunta

O Rails 3 faz algumas coisas legais para tornar o JavaScript discreto, então eles fizeram coisas assim:

= link_to "Logout", user_session_path, :method => :delete

..converta para

<a href="/logout" data-method="delete" rel="nofollow">Logout</a>

Mas apenas me ocorreu .. Quando eu desligo o JavaScript, o método não é mais excluído, ele é o esperado. Então, existem planos para, ou há alguma maneira de permitir que estes data- Atributos para se degradar graciosamente, para que o link ainda seja uma solicitação de exclusão?

Foi útil?

Solução

A mudança que eles fizeram no Rails 3 com estes data- Os atributos não eram sobre degradação graciosa, era sobre JavaScript discreto.

No Rails 2, especificando :method => :delete Em um link, geraria um monte de JavaScript embutido que criaria um formulário com uma entrada oculta e enviasse o formulário. Era o mesmo que é agora: desligue o JavaScript e o padrão é uma solicitação GET. Como tal, apoiar o caso de nenhum JavaScript é o mesmo de antes.

Uma opção é usar um formulário/botão em vez de um link para que você possa incluir o método como um campo oculto, assim como o JavaScript do Rails 2. Outra opção é fazer com que a versão GET levá -lo a uma página intermediária que, por sua vez, possui o formulário/botão.

O benefício da nova abordagem é que ela é discreta. O JavaScript para alterar o verbo http existe em um arquivo externo e usa o data- atributos para determinar a quais elementos deveriam ser anexados.

Outras dicas

Em vez de usar o link_to Método - que exigiria que você use JavaScript para garantir que o método HTTP seja DELETE -- use o button_to método, que criará um formulário com um elemento de entrada oculto que informa aos Rails para tratar o método HTTP como DELETE ao invés de POST. Se necessário, você pode usar o CSS para estilizar o botão no formulário, para que pareça um link.

A única chance que você tem é definir um formulário. Um link não pode ser uma postagem com _method = "excluir" sem JavaScript ou por formulário.

Não é possível sem JavaScript.

Eu faço um pequeno plugin jQuery para converter data-method Atributo do link para formas pseudo -ocultas (usado no projeto Laravel, por exemplo).

Se você quiser usá -lo: https://github.com/ifnot/restfulizerjs

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