在sinatra的应用程序中,
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
模板?
谢谢。
答案 0 :(得分: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
答案 1 :(得分:1)
我会推荐Sinatra-Partial插件:https://github.com/yb66/Sinatra-Partial
在您的代码中,您只需要:安装gem'gem install sinatra-partial'
在代码中需要部分:'require'sinatra / partial'
按以下方式更改您的代码:
@@ new
%h1 Add a new item
= partial '_form'
@@ edit
%h1 Edit an existing item
= partial '_form'
如果要在_form partial中添加一些参数,可以使用locals传递它:
= partial '_form', locals: { param: @param }
答案 2 :(得分:1)
如果您正在使用sinatra,为什么不使用它的内置haml方法,如下所示:
= haml :partial_form, layout: false
在rails中:
= render 'partial_form'