2015-04-12 7 views
1

Итак, я создал «веб-приложение», используя ruby ​​2.1.5 на рельсах 4.2.0.Как я могу скрыть свой файл application.html.erb

Что я хочу, это одностраничная целевая страница. Я не хочу, чтобы на эту целевую страницу влияли любые другие существующие файлы css, которые у меня есть в макете стилей.

Целевая страница (в идеале) использует файл css с именем freelancer.css, а остальная часть моего сайта использует default.css.

Итак, короче говоря; как я могу специально вызвать таблицу стилей для одного представления/контроллера, избегая остальной части моих файлов css/scss для остальной части моего приложения.

Целевая страница имеет свой собственный контроллер с именем Welcome.

class WelcomeController < ApplicationController 
    def index 
    render layout: false 
    end 
end 

Я определил пользовательский маршрут.

authenticated :user do 
    root 'pages#home', as: "authenticated_root" 
    end 
    root 'welcome#index' 

И мой индекс контроллера приветствия как таковой.

<head> 
     <meta charset="utf-8"> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <meta name="description" content=""> 
     <meta name="author" content=""> 
     <%= favicon_link_tag 'notes.png' %> 
     <title>Balern Edu.</title> 
     <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> 
     <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 
     <%= csrf_meta_tags %> 
     <script src='assets/moment.min.js'></script> 
     <script src='assets/fullcalendar.js'></script> 
     <link rel='stylesheet' href='assets/fullcalendar.css'> 

     <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> 
     <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> 
     <!--[if lt IE 9]> 
      <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> 
      <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> 
     <![endif]--> 
    </head> 

Мой файл application.css.scss:

* 
*= require_self 
*= require 'masonry/transitions' 
*= require font-awesome 
*= require_tree . 
*/ 
@import 'bootstrap'; 
@import 'bootstrap/theme'; 
@import 'chosen'; 
@import 'image-select'; 

ответ

4

Вместо использования render layout: false вы можете использовать layout: "welcome" в верхней части своего WelcomeController, где страница с макетом называется welcome.html.erb. Там вы можете вызывать любые таблицы стилей, которые вы хотите.

+0

Я внес эти изменения, однако я вижу навигатор, который находится в моей директории макетов. Я не хочу, чтобы на целевой странице welcome.html.erb знали о тех файлах css, которые назывались freelancer.css.scss. Поэтому я хочу удалить все частичные, navs, css и т. Д. И хочу, чтобы весь welcome.html.erb в основном имел только пустой файл html.file (в отношении его содержимого). –

+0

Создал ли файл 'welcome.html.erb' файл' layouts'? Можете ли вы изменить свой вопрос, чтобы включить содержимое этого файла? –

+0

Я считаю, что вы правы, я не реализовал все правильно, как вы сказали. Ваш ответ помог, спасибо! –

0

Вы можете включать CSS или JavaScript-файл только для пользовательских страниц положить этот код в настраиваемое представление:

<% content_for :head do %> 
    <%= javascript_include_tag "posts" %> 
    <% stylesheet_link_tag "posts" %> 
<% end %> 

Также вы необходимо поместить этот код в application.html.erb:

<head> 
    <%= yield :head %> 
</head> 
Смежные вопросы