2016-01-07 6 views
1

Я в первую очередь разработчик LAMP, который медленно превращает переключатель в рубиновое развитие. В PHP я могу разделить страницу на сегменты (чтобы максимизировать повторное использование кода) с использованием отдельных файлов PHP для каждого раздела. Примером этого является wordpress, где у вас есть отдельный файл заголовка/боковой панели/содержимого и т. Д.Ruby on Rails externalizing Views

Возможно ли это использование Ruby on Rails? Будет ли это эквивалентом внедрения контроллера/представления в другое представление? До сих пор я немного тупик в том, что все будет внедрено, потому что кажется, что есть контроллер, у которого есть маршрут для представления, поэтому я не уверен, какой бит вы попытаетесь включить.

ответ

1

То, что вы ищете, называется partials. Вы можете создать частичную, например, боковую панель или нижний колонтитул, а затем визуализировать ее в шаблон.

Официальный путеводитель Rails содержит некоторую информацию о using partials.

По сути, вы создаете имя файла с префиксом подчеркивания, например, как posts/_form.html.erb и вы сделать его в поле зрения

<%= render partial: "form" %> 

Вы также можете указать абсолютный путь из views папки

<%= render partial: "/posts/form" %> 

Используются те же правила именования шаблона (например, суффиксы формата).

+0

Просто попробовал это, он отлично работал, спасибо за помощь! –

0

Вот как я применил боковую панель, используя частичные. Надеюсь, это ответит на большую часть вашего вопроса.

Сначала отредактируйте application_controller.rb, чтобы передать переменные в представление макета. Используйте before_action

class ApplicationController < ActionController::Base 

    protect_from_forgery with: :exception 
    before_action :set_page 

    def set_page 
    @categories = Category.all 
    end 

end 

рядом, вид редактировать макет (application.html.erb)

<body> 
    <div class="container">  
    <div class="col-md-10"> 
     <%= yield %> 
    </div> 

    <div class="col-md-2"> 
     <%= render partial: 'categories/sidebar' %> 
    </div>     
    </div> 
</body> 

затем создать частично. Вы можете использовать переменные контроллера доступа к каталогам из частичного.
/views/categories/_sidebar.html.erb

<h3>Categories</h3> 
<div class="row"> 
    <br> 
    <% @categories.each do |category| %> 
     <h5 class="media-heading"> 
     <%= link_to category.name, category %> 
     </h5> 
    <% end %> 
</div> 

Для скриншоте страницы и более подробно, проверки my post.

+0

(Хороший пример, но вопрос с 1.5 года назад, и кажется, что на него ответили?) –