Sinatra和Chartkick的例子

时间:2014-04-23 08:20:33

标签: sinatra chartkick

我对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 文件放在 public 文件夹中。还添加了曲棍球,以确保它没有神奇地默认为一些罐头的例子。谁不喜欢曲棍球?

1 个答案:

答案 0 :(得分:2)

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是为了方便起见,请注意格式化。