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&#39;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", если ваш заголовок находится в макете приложения

Другие вопросы по тегам