首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在每个<body>标签中插入我的HTML/模板?

如何在每个<body>标签中插入我的HTML/模板?
EN

Stack Overflow用户
提问于 2012-03-24 04:26:59
回答 2查看 250关注 0票数 0

我想在我的每个webapp页面的<body>标签中插入一段任意的超文本标记语言代码(或者最好是另一个Markaby模板)。

我使用Markaby,这意味着模板(或多或少)是一个Ruby类,body是它的方法。因此,必须能够编写一些Ruby代码来拦截body方法调用并插入我的超文本标记语言。

我如何使用Sinatra做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2012-03-25 02:50:47

是什么阻止你在你的布局中使用<%= yield %>?例如,下面的代码将使用<%= yield %>在布局的<body>标记内呈现当前视图

这就是你的意思吗?

代码语言:javascript
复制
require 'sinatra'

get '/hello/:name' do
  @name = params[:name]
  erb :hello
end

__END__
@@ layout
<html>
  <body>
   <%= yield %>
  </body>
</html>

@@ hello
<h3>Hello <%= @name %>!</h3>

来自About.com - Sinatra的代码

票数 0
EN

Stack Overflow用户

发布于 2012-03-25 03:58:38

这可以通过在Markaby Builder类中重新定义body方法来实现。下面这段代码可以做到这一点:

代码语言:javascript
复制
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标记中的第一个内容:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9846087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档