Включая частичный шаблон - PullRequest
1 голос
/ 24 февраля 2010

В приложении Синатры,

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 ]

3 голосов
/ 24 февраля 2010

Вы уже смотрели на это: 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
1 голос
/ 14 июля 2014

Если вы используете sinatra, почему бы не использовать его встроенный метод haml, например:

= haml :partial_form, layout: false

В рельсах:

= render 'partial_form'
1 голос
/ 19 ноября 2013

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

В вашем коде вам просто нужно: установить гем 'gem install sinatra-частичный'

требуется частичное в вашем коде: 'требуют' sinatra / частичное '

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

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

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

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

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