Rails3 отображает шаблон js.erb с типом содержимого text / html вместо text / javascript - PullRequest
8 голосов
/ 29 апреля 2010

Я создаю новое приложение с 3.0.0.beta3. Я просто пытаюсь визуализировать шаблон js.erb в запрос Ajax для следующего действия (в publishing_controller.rb):

def get_pubmed_data
    entry = Bio::PubMed.query(params[:pmid])# searches PubMed and get entry
    @publication = Bio::MEDLINE.new(entry) # creates Bio::MEDLINE object from entry text
    flash[:warning] = "No publication found."if @publication.title.blank? and @publication.authors.blank? and @publication.journal.blank?      
    respond_to do |format|
        format.js
    end
end

В настоящее время мой шаблон get_pubmed_data.js.erb просто

alert('<%= @publication.title %>')

Сервер отвечает следующим сообщением

alert('Evidence for a herpes simplex virus-specific factor controlling the transcription of deoxypyrimidine kinase.')

, что прекрасно, за исключением того, что в браузере ничего не происходит, возможно, потому что тип содержимого ответа - «text / html» вместо «text / javascript», как показано заголовком ответа, частично воспроизведенным здесь:

Status 200
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Transfer-Encoding chunked
Content-Type text/html; charset=utf-8

Это ошибка или я что-то упустил? Спасибо за вашу помощь!

Ответы [ 4 ]

10 голосов
/ 30 апреля 2010

Мне, наконец, удалось получить правильный тип контента в ответе, заставив его:

respond_to do |format|
    format.js {render :content_type => 'text/javascript'}
end
1 голос
/ 05 декабря 2011

С Rails 3.1.1 я столкнулся с подобной проблемой. Мой ответ будет отображаться как HTML, даже если я явно упомянул format.js в моем контроллере. Оказывается, проблема была в том, что у меня были файлы jquery.js в моих ресурсах и они были загружены шаблоном. jquery-rails использует свою собственную копию jquery, и загрузка этих файлов также заставила rails по какой-то причине обработать ответ как html. Может помочь кому-то, кто застрял в этой проблеме.

0 голосов
/ 16 ноября 2013

У меня была та же проблема, и оказалось, что я создал метод с именем content_type на моем контроллере, который переопределял значение по умолчанию.

0 голосов
/ 22 сентября 2010
У

была похожая проблема, при которой файл js загружался как текстовый файл, но в итоге это были только мои сценарии, которые загружались в неправильном порядке.

замена

<%= javascript_include_tag :all %>

с

<%= javascript_include_tag "jquery.min" %>
<%= javascript_include_tag "jquery-ui.min" %>
<%= javascript_include_tag "rails" %>

Также следует отметить, что метод getscript

т.е. заменить:

onClick="<%= get_pubmed_data_path(:format => :js) %>"

с:

onClick="$.getScript('<%= escape_javascript(get_pubmed_data_path(:format => :js)) %>');"
...