Я пишу мобильное веб-приложение с использованием Rails и jQuery mobile.Я читаю все свои данные во время выполнения из Amazon AWS S3, используя HTTParty.
Один из экранов, который мне нужен для рендеринга, - это просто прямой HTML, в который, как правило, встроены изображения, размещенные в той же папке на S3.Вот где моя проблема.Я могу легко получить html с помощью HTTParty и использовать опцию html_safe для его рендеринга, но изображения не отображаются, поскольку они являются относительными путями.Поэтому я пытался найти способ обойти это.
Я пробовал несколько вещей, но я в основном искал использование html-тега, чтобы изображения указывали на правильное местоположение.Проблема в том, что я не могу указать базовый тег, а затем иметь другие ссылки на странице, потому что они тогда используют ту же самую базу, и ссылки не указывают на правильное местоположение.Поэтому я посмотрел на наборы кадров и фрейм и указал базовый тег только на фрейм, который, как мне кажется, я использовал правильно, но безрезультатно.Я пытался использовать, но безрезультатно.
Так что в основном я ищу способ, которым я мог бы установить базу для относительных имен путей в html-строке, которую я прочитал с S3, если это не было ясно.Я открыт для любых предложений!И заранее спасибо за то, что даже читаете и пытаетесь решить эту очень специфическую проблему!
О, и еще одна вещь, когда я смотрю на страницу с Firebug, первая строка в заголовке - это базовый тег с установленным hrefна текущую страницу.Я не могу выяснить, откуда это исходит, но я предполагаю, что рельсы бросают это туда?Я не знаю, имеет ли это значение, так как я поместил под ним еще один базовый тег с yield: intro_base?Или это одна из моих проблем, потому что там есть конфликт?
А потом был код: Мой метод 'intro':
def intro
@intros = []
@app_config.intro_screens.each do |intro_screen|
intro_screen_response =
ApplicationController.get("#{@diandr_url}/#{intro_screen['filename']}.html")
@intros << intro_screen_response.body
end
@intros.reverse!
@intros_length = @intros.length
respond_to do |format|
format.html
end
end
Мой файл 'intro.html.erb':
<% page_num = params[:id].to_i %>
<% content_for :intro_base do %>
<base href="https://s3.amazonaws.com/our_bucket_name<%=@dir_url%>/" target="intro" />
<% end %>
<% content_for :mobile_header do %>
*some jQuery mobile paging and header stuff is in here, shouldn't matter*
<% end %>
<% content_for :mobile_content do %>
<!-- <iframe src=<%= @intros[page_num] %> height="100%" width="100%"> -->
<!-- <p> This browser does not support iframes </p> -->
<!-- </iframe> -->
<frameset cols="100%">
<frame name="intro" <%= @intros[page_num].html_safe %>
</frameset>
<% end %>
Заголовок моего макета:
<head>
<title> our Mobile App </title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- These are the jQuery Mobile scripts -->
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js">
</script>
<%= yield :intro_base %>
<%= stylesheet_link_tag "master" %>
<%= javascript_include_tag :defaults %>
<%= csrf_meta_tag %>