Ruby 如何将我的HTML/模板插入每个<;车身>;标签?
我想在我的每个webapp页面的Ruby 如何将我的HTML/模板插入每个<;车身>;标签?,ruby,sinatra,markaby,Ruby,Sinatra,Markaby,我想在我的每个webapp页面的标记中插入一段任意HTML代码(或者最好是另一个Markaby模板) 我使用的是Markaby,这意味着模板(或多或少)是一个Ruby类,body是它的方法。因此,必须能够编写一些Ruby代码来拦截body方法调用并插入我的HTML 我该如何使用Sinatra?是什么阻止您在布局中使用?例如,下面的代码将使用 在这种情况下,模板是layout.erb,页面是hello.erbhello.erb在layout.erb中代替语句呈现。这就是你的意思吗 require
标记中插入一段任意HTML代码(或者最好是另一个Markaby模板)
我使用的是Markaby,这意味着模板(或多或少)是一个Ruby类,body
是它的方法。因此,必须能够编写一些Ruby代码来拦截body
方法调用并插入我的HTML
我该如何使用Sinatra?是什么阻止您在布局中使用
?例如,下面的代码将使用
在这种情况下,模板是layout.erb
,页面是hello.erb
hello.erb
在layout.erb
中代替
语句呈现。这就是你的意思吗
require 'sinatra'
get '/hello/:name' do
@name = params[:name]
erb :hello
end
__END__
@@ layout
<html>
<body>
<%= yield %>
</body>
</html>
@@ hello
<h3>Hello <%= @name %>!</h3>
需要“sinatra”
获取“/hello/:name”do
@名称=参数[:名称]
雇员再培训局:你好
结束
__结束__
@@布局
@@你好
你好
可以通过在Markaby
Builder
类中重新定义body
方法来完成的代码。这段代码可以做到这一点:
class Markaby::Builder
alias body_orig body
def body(*args, &block)
str = capture(&block)
block = proc { text('ON EVERY PAGE' + str) }
body_orig(*args, &block)
end
end
这一个将包括另一个Markaby模板,作为body
标记中的第一件事:
class Markaby::Builder
alias body_orig body
def body(*args, &block)
str = capture(&block)
str2 = render :mab, :include_template_name, *args
block = proc { text(str2 + str) }
body_orig(*args, &block)
end
end
谢谢你的建议,但我真正需要的是我在另一个答案中发布的东西