Ruby on Rails 4: почему мое изображение заголовка отображается на всех страницах, кроме одной?
Я занимаюсь разработкой на основе учебника по Ruby on Rails Майкла Хартла с помощью Devise и Forem. Код виден по адресу https://github.com/fchampreux/ODQ_Web. Веб-сайт доступен по адресу http://www.opendataquality.org/
В своем заголовке я включил изображение:
<header>
...
<div class="row">
<div class="col-md-3">
<h5><img style="position:relative; left:10px; top:10px; vertical-align:bottom" alt="ODQ Logo" src="assets/ODQ_Logo.png"></h5>
</div>
...
Он отлично работает и генерирует следующий HTML-код для каждой из моих страниц:
<img style="position:relative; left:10px; top:10px; vertical-align:bottom" alt="ODQ Logo" src="assets/ODQ_Logo.png">
Все статические страницы находятся в отдельной папке и создаются static_pages_controller. Каждый из них правильно отображает изображение.
Динамическая страница, созданная Forem, не отображает изображение. Эта страница на самом деле не указана непосредственно ни в файле rout.rb, ни в контроллере.
routes.rb
ODQWeb::Application.routes.draw do
# This line mounts Forem's routes at /forums by default.
# This means, any requests to the /forums URL of your application will go to Forem::ForumsController#index.
# If you would like to change where this extension is mounted, simply change the :at option to something different.
#
# We ask that you don't use the :as option here, as Forem relies on it being the default of "forem"
mount Forem::Engine, :at => '/forums'
devise_for :users
# The priority is based upon order of creation: first created -> highest priority.
# See how all your routes lay out with "rake routes".
# You can have the root of your site routed with "root"
root to: 'static_pages#welcome'
get '/welcome', to: 'static_pages#welcome'
get '/partners', to: 'static_pages#partners'
get '/careers', to: 'static_pages#careers'
get '/products', to: 'static_pages#products'
get '/services', to: 'static_pages#services'
get '/solutions', to: 'static_pages#solutions'
end
Инициализатор Forem настроен для макета приложения:
конфиг / Инициализаторы / forem.rb
Rails.application.config.to_prepare do
Forem.layout = "application"
end
Можете ли вы помочь мне понять и решить эту проблему?
2 ответа
Если вы перейдете на несколько сайтов, которые Forem перечисляет как пользователей Forem, то View Source
, тогда ищи <img>
теги, вы увидите такие вещи:
<header>
<a class="logo" href="/">
<img alt="Huntington's Disease Youth Organization"
src="/assets/logo-57ec7c34b82b9d8e2875b30929d99838.png" /></a>
Изучите атрибут src <img>
тег.
Затем, если я посмотрю на свое собственное приложение для учебника по Ruby on Rails, которое не использует Forem, у меня на странице home.html.erb будет следующее:
<%= link_to image_tag('rails.png', alt: 'Rails'), 'http://rubyonrails.org/' %>
который производит HTML:
<a href="http://rubyonrails.org/"><img alt="Rails" src="/assets/rails.png" /></a>
Изучите атрибут src <img>
тег. Теперь сравните атрибуты src в тех <img>
теги к атрибуту src в вашем <img>
тег:
src="/assets/rails.png"
src="/assets/logo-57ec7c34b82b9d8e2875b30929d99838.png"
src="assets/ODQ_Logo.png"> #<===YOUR PATH
Итак, я хотел бы рассмотреть использование "/" в начале вашего пути.
Конфиг / Инициализаторы /forem.rb
# Rails.application.config.to_prepare do
# If you want to change the layout that Forem uses, uncomment and customize the next line:
# Forem::ApplicationController.layout "forem"
#
# end
раскомментируйте эти строки и замените "forem" на "application", если ваш заголовок находится в макете приложения