2015-06-15 3 views
0

В моих маршрутов я определить глобальную категорию с некоторым ID для загрузки динамического содержимого:маршрутизации конфликт с активами в рельсах - только на производстве

get "/:global_category/:id" => "pages#index" 

Маршрут помещается на нижней из routes.rb , Все легко и без проблем, по крайней мере, при разработке. Теперь я также загрузить некоторые WebFonts через CSS в мое приложение, и когда я на производстве, я получаю следующее исключение, когда загружаются мои шрифты:

undefined method `id' for nil:NilClass 

Пострадавшая URL является: http://www.example.com/assets/Sansation_Bold-webfont.woff

загружаю шрифты, расположенные в/активы/шрифты в файле Сасс, как это:

@font-face 
    font-family: 'ApolloASM' 
    src: url('ApolloASM-webfont.eot') 
    src: url('ApolloASM-webfont.eot?#iefix') format('embedded-opentype'), url('ApolloASM-webfont.woff2') format('woff2'),url('ApolloASM-webfont.woff') format('woff'),url('ApolloASM-webfont.ttf') format('truetype'),url('ApolloASM-webfont.svg#apollo_asmregular') format('svg') 
    font-weight: normal 
    font-style: normal 

Существует, очевидно, конфликт с моими маршрутами и активов pipeli северо-восток Только на производстве (я развертываю на heroku) Я могу воспроизвести это, поэтому я попытался изменить свой production.rb, но после изучения документа (http://guides.rubyonrails.org/asset_pipeline.html) Я до сих пор не знаю, что делать.

Я также пытался прекомпилировать активы.

Это, похоже, не является причиной проблемы, а также мои шрифты загружены правильно! Любые советы приветствуются.

ответ

0

я решил его с помощью помощника Sass «шрифта URL»:

@font-face 
    font-family: 'ApolloASM' 
    src: font-url('ApolloASM-webfont.eot') 
    src: font-url('ApolloASM-webfont.eot?#iefix') format('embedded-opentype'), font-url('ApolloASM-webfont.woff2') format('woff2'),font-url('ApolloASM-webfont.woff') format('woff'),font-url('ApolloASM-webfont.ttf') format('truetype'),font-url('ApolloASM-webfont.svg#apollo_asmregular') format('svg') 
    font-weight: normal 
    font-style: normal 

нет необходимости предварительной компиляции или добавить что-нибудь в production.rb или application.rb файл

убедитесь все шрифты хранятся в каталоге/app/assets/fonts.

0

Проблема с таким маршрутом заключается в том, что он будет соответствовать нагрузке других путей в вашей системе. Например, «/ users/123» будет интерпретироваться как pages#index params={:global_category => "users", :id => 123}, тогда как вы, возможно, ожидали, что он перейдет к users#show params={:id => 123}.

Такие маршруты, как это необходимо, должны идти около дна вашего файла route.rb, чтобы они не «крали» пути от других маршрутов: маршруты проверяются в том порядке, в котором они отображаются в файл.

+0

Да, я знаю о приоритетах маршрутизации и о том, что маршрут уже находится на дне маршрутов rb :(Так что мне интересно, почему я все еще получаю эту ошибку и только на производстве. – DonMB

+0

Имеет ли этот ресурс определенную определенность в этом месте в файловая система (относительно общедоступной папки вашего приложения)? Может быть, ваш сервер не находит свой актив и поэтому возвращается обратно на route.rb. –

+0

hmmm. Все эти шрифты расположены в/assets/fonts - я загружаю их через файл sass вроде этого «src: url (« ApolloASM-webfont.eot »)» - мне нужно использовать здесь тег url? Вопрос по-прежнему остается вопросом, почему это происходит только при производстве: -/ – DonMB

Смежные вопросы