Um pequeno tutorial em português pra diferenciar melhor respond_to? e respond_to. Não parece ter muita não? Mas o tio Chuck Norris vai me ajudar a esclarecer melhor isso aqui.
respond_to? é um método do Ruby Core como você pode ver, e não do Ruby On Rails, ele basicamente verifica se determinado objeto responde a um método, como o nome sugere mesmo.
Por exemplo:
class Chuck < Object def norris puts "the man" end end chuck_norris = Chuck.new p chuck_norris.respond_to?("norris") # true p chuck_norris.respond_to?("mr_t") # false
Já o respond_to, sem o ponto de interrogação (eles fazem parte do nome do método) faz parte do ActionController do Ruby On Rails. Ele coloca suporte a Web Service na sua aplicação, isso quer dizer que ele consegue resolver o tipo do recurso que você deseja.
respond_to do |format| format.html # render por default nome_da_acao.html.erb format.js # render o nome_da_acao.rjs format.xml { render :xml => @chuck.to_xml } # coloca o chuck pra xml e envia end
Com esse código na action você poderia usar, por exemplo:
http://localhost:3000/nome_da_acao.html http://localhost:3000/nome_da_acao.xml Ou realizar uma chamada JS unobstrusive usando AJAX.
Isso ai, espero ter ajudado.