作为Web平台,我对
Ruby很陌生,通过调整和扩展示例来学习.我喜欢Sinatra并希望使用它和Chartkick来显示图表.不幸的是,我甚至无法获得最简单的例子,似乎缺乏完整的例子(很多’一个’内衬’).这就是我所拥有的:
require 'sinatra'
require 'chartkick'
get '/' do
'<%= javascript_include_tag "//www.google.com/jsapi", "chartkick" %>
<%= pie_chart({"Football" => 10, "Basketball" => 5}) %>'
end
那么,我做错了什么极其简单的事情?任何帮助将不胜感激.谢谢!
编辑,我的解决方案基于公认的答案:
require 'sinatra'
require 'chartkick'
template :layout do
<<LAYOUT
<html>
<head>
<title>Sinatra ERB Chartkick Test</title>
<script src="//www.google.com/jsapi"></script>
<script src="chartkick.js"></script>
</head>
<body>
<%= yield %>
</body>
</html>
LAYOUT
end
template :index do
<<INDEX
<center>
<h1>#{Time.now.inspect}</h1>
<p>
<%= pie_chart({"Football" => 10, "Basketball" => 5, "Hockey" => 2}) %>
</p>
</center>
INDEX
end
get '/' do
erb :index
end
另外,为了新手(像我一样),我将chartkick.js文件放在公共文件夹中.还添加了曲棍球,以确保它不是神奇的默认一些罐头的例子.谁不喜欢曲棍球?
最佳答案
This is the section of the docs你需要完成这个例子.如果您不想将视图设置为单独的文件,则使用内联模板,例如
get '/' do
erb :index
end
__END__
@@ layout
<html><body>
<%= yield %>
</html></body>
@@ index
<%= javascript_include_tag "//www.google.com/jsapi", "chartkick" %>
<%= pie_chart({"Football" => 10, "Basketball" => 5}) %>
或命名模板:
template :layout do
<<LAYOUT
<html><body>
<%= yield %>
</html></body>
LAYOUT
end
template :index do
<<INDEX
<%= javascript_include_tag "//www.google.com/jsapi", "chartkick" %>
<%= pie_chart({"Football" => 10, "Basketball" => 5}) %>
INDEX
end
get '/' do
erb :index
end
我在这里使用heredocs是为了方便,只是要小心格式化.