2010-02-24 5 views
1

Dans l'application de sinatra,modèle partiel

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 

Comment exiger le modèle @@ _form partiel dans @@ new et @@ edit?

Merci.

Répondre

3

Avez-vous déjà regardé ceci: http://www.sinatrarb.com/faq.html#partials?

J'ai créé app_helpers.rb et l'ai demandé dans mon fichier d'application principal. app_helpers contient cette méthode:

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 

fin

Dans mon point de vue, je l'utilise:

- partial :file 
+0

Bon travail Brian, merci! – Amyth

1

je recommande plug-in Sinatra-partiel: https://github.com/yb66/Sinatra-Partial

Dans votre code, vous venez besoin: installer gem 'gem installer sinatra-partielle'

besoin partie IAL dans votre code: « require 'sinatra/partielle'

changer votre code comme suit:

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

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

si vous voulez ajouter des paramètres dans la _form partielle, vous pouvez utiliser les habitants de la transmettre:

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

Si vous utilisez sinatra, pourquoi ne pas l'utiliser est intégré dans la méthode de haml comme ceci:

= haml :partial_form, layout: false 

Dans les rails:

= render 'partial_form'