Как вы отправляете необработанные заголовки в ruby? - PullRequest
4 голосов
/ 29 июня 2009

У меня есть страница, которая использует набор символов UTF-8, однако символы на странице искажены, я думаю, что это просто вопрос установки заголовка «... Я знаю, как это сделать в PHP, просто поместите следующее в верхней части страницы.

<?php header("Content-Type: text/html; charset=utf-8"); ?>

Есть ли способ сделать это в ruby? Можете ли вы разместить заголовок вверху страницы, например?


обновление: 29 июня, 1:20 PST

Я не использую это как часть приложения rails. Именно для встроенной страницы браузера в автономном приложении я могу использовать Javascript и / или Ruby для создания динамических страниц.

Ответы [ 3 ]

2 голосов
/ 30 июня 2009

Вы используете Ruby on Rails?

request.headers["Content-Type"] # => "text/plain"

Или, может быть, библиотека CGI в Ruby?

http://www.ruby -doc.org / STDLIB / libdoc / CGI / RDoc / классы / CGI.html # M000098

1 голос
/ 30 июня 2009

Если вы используете Rails, вы хотите:

response.content_type = Mime::HTML
response.charset      = "utf-8"

Вы также можете попытаться установить заголовки напрямую:

response.headers["Content-Type"] = "text/html; charset=utf-8"

Если вы используете Rack, вы хотите установить заголовок, используя второй элемент кортежа:

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

Если вы используете сырой CGI (я определенно рекомендую Rack over cgi.rb):

header("text/html; charset=utf-8")
0 голосов
/ 30 июня 2009

Я не уверен, как ответить на этот вопрос напрямую, не узнав больше о том, как вы генерируете страницу, но я мог бы предложить вам взглянуть на некоторые из облегченных не-Rails веб-фреймворков для Ruby. Их много, и они делают такие вещи легкими.

Например, Rack имеет простой в использовании хеш для отправки заголовков в браузер. Аналогично в Camping вы можете просто сделать что-то вроде @headers['Content-Type'] = 'text/css'

...