Como você envia cabeçalhos brutos em Ruby
-
21-08-2019 - |
Pergunta
Tenho uma página que usa o conjunto de caracteres UTF-8, porém os caracteres estão mutilados na página, acho que é só uma questão de definir um cabeçalho "Content-Type:texto/html;conjunto de caracteres=utf-8" ...Eu sei fazer isso em PHP, basta colocar o seguinte no topo da página.
<?php header("Content-Type: text/html; charset=utf-8"); ?>
Existe uma maneira de fazer isso em Ruby?Você pode colocar um cabeçalho no topo de uma página, assim?
atualizar: 29 de junho, 13h20 PST
Eu sou não usando isso como parte de um aplicativo Rails.É para uma página de navegador incorporada em um aplicativo independente, posso usar Javascript e/ou Ruby para criar páginas dinâmicas.
Solução
Se você estiver usando Rails, você deseja:
response.content_type = Mime::HTML
response.charset = "utf-8"
Você também pode tentar definir os cabeçalhos diretamente:
response.headers["Content-Type"] = "text/html; charset=utf-8"
Se estiver usando Rack, você deseja definir o cabeçalho usando o segundo elemento da tupla:
class MyRackApp
def call(env)
response = []
# do stuff with env, populating response
# response is [status_code, headers, body]
response[1]["Content-Type"] = "text/html; charset=utf-8"
response
end
end
Se você estiver usando CGI bruto (eu definitivamente recomendaria Rack em vez de cgi.rb):
header("text/html; charset=utf-8")
Outras dicas
Você está usando Ruby on Rails?
request.headers["Content-Type"] # => "text/plain"
Ou talvez a biblioteca CGI do Ruby?
http://www.ruby-doc.org/stdlib/libdoc/cgi/rdoc/classes/CGI.html#M000098
Não tenho certeza de como responder isso diretamente sem aprender mais sobre como você está gerando a página, mas posso sugerir que você dê uma olhada em alguns dos frameworks web leves não-Rails para Ruby.Existem muitos e eles facilitam coisas assim.
Por exemplo, Prateleira tem um hash fácil de usar para cabeçalhos enviarem ao navegador.Da mesma forma em Acampamento você pode simplesmente fazer algo como @headers['Content-Type'] = 'text/css'