Pergunta

Eu estava passando pelo livro AWDR sobre desenvolvimento da Web com Ruby on Rails e um dos problemas com o código antigo foi que não usava o respondente para garantir que a exibição usada fosse a visualização JavaScript. Agora, em alguns exemplos atualizados, vi pessoas mencionando que mais tarde, ao implementar degradação graciosa, use request.xhr? Para saber se o usuário possui o JavaScript ativado e, se não, redirecionará o usuário.

Eu queria saber se você poderia usar o respondente para obter o mesmo comportamento e, se sim, se isso é considerado uma boa forma ou não e por quê?

Então, o que estou pensando em fazer é algo como:

def function
  respond_to do |format|
    format.js do
      basic_stuff
    end
    format.html do
      basic_stuff
      user_redirect
    end
  end
end

Parece meio que viola o princípio seco, e provavelmente estou perdendo algo sobre como o usuário e o servidor estão interagindo aqui. Para ser sincero, a documentação da API não deixou totalmente claro para mim.

Foi útil?

Solução

Bem, você pode refatorar assim:

def function
  basic_stuff # executed regardless of the mime types accepted
  respond_to do |format|
    format.html do
      user_redirect
    end
  end
  # will fall back rendering the default view - which you should ensure will be js
end

request.xhr? olha para o pedido X-Requested-With Cabeçalho (para ver se ele contém "xmlHttPrequest"). respond_to olha para os tipos de MIME aceitos.

Você pode usar qualquer um para implementar algum tipo de degredação graciosa.

MAS Você não será capaz de usar xhr? Para degredação graciosa, a menos que suas chamadas AJAX estejam definindo esse cabeçalho (o protótipo faz isso automaticamente).

Além disso, respond_to Dá mais flexibilidade, ou seja, enviando XML, JSON, JS, seja qual for o mesmo a partir do mesmo bloco.

Então eu recomendo respond_to aqui.

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