2010-02-24 4 views
1

В приложении Синатры,В том числе частичный шаблон

require 'rubygems' 
require 'sinatra' 
require 'haml' 

get '/new' do 
    haml :new 
end 

get '/edit' do 
    haml :edit 
end 

__END__ 

@@ layout 
%html 
    %head 
    %title 
    %body 
    = yield 

@@ _form 
# partial form 

@@ new 
%h1 Add a new item 
# require partial _form 

@@ edit 
%h1 Edit an existing item 
# require partial _form 

Как потребовать частичного @@ _form шаблона в @@ new и @@ edit?

спасибо.

ответ

3

Вы еще не просмотрели: http://www.sinatrarb.com/faq.html#partials?

Я создал app_helpers.rb и потребовал его в основном файле приложения. app_helpers содержит этот метод:

def partial(template, *args) 
    options = args.last.is_a?(Hash) ? args.pop : { } 
    options.merge!(:layout => false) 
    if collection = options.delete(:collection) then 
     haml_concat(collection.inject([]) do |buffer, member| 
      buffer << haml(template, options.merge(
            :layout => false, 
            :locals => {template.to_sym => member} 
           ) 
        ) 
     end.join("\n")) 
    else 
     haml_concat(haml(template, options)) 
    end 

конец

В моих взглядов, я использую:

- partial :file 
+0

Good Work Brian, Спасибо! – Amyth

1

Я бы порекомендовал Синатра-Partial плагин: https://github.com/yb66/Sinatra-Partial

В вашем коде, вы просто необходимо: установить gem 'gem install sinatra-partial'

требуется часть МВЛ в коде: «требуется„Синатра/частичное“

изменить код следующим образом:

@@ new 
%h1 Add a new item 
= partial '_form' 

@@ edit 
%h1 Edit an existing item 
= partial '_form' 

если вы хотите добавить некоторые параметры в _form частичное, вы можете использовать местные жители, чтобы передать его:

= partial '_form', locals: { param: @param } 
1

Если вы используете Синатра, почему бы не использовать это встроенный метод Haml следующим образом:

= haml :partial_form, layout: false 

В рельсах:

= render 'partial_form' 
Смежные вопросы