6

当我尝试在 Sinatra 中执行此操作时,

班级评论
    包括 DataMapper::Resource
    属性:id,序列号
    属性:正文,文本
    属性:created_at,日期时间
结尾

得到 '/show' 做
  评论 = 评论.all
  @comment.each 做 |comment|
    “#{comment.body}”
  结尾
结尾

它返回此错误,

ERROR: undefined method `bytesize' for #<Comment:0x13a2248>

谁能指出我正确的方向?

谢谢,

4

1 回答 1

14

您收到此错误是因为 Sinatra 获取路由的返回值并将其转换为字符串,然后再尝试将其显示给客户端。

我建议您使用视图/模板来实现您的目标:

# file: <your sinatra file>
get '/show' do
  @comments = Comment.all
  erb :comments
end

# file: views/comments.erb
<% if !@comments.empty? %>
  <ul>
    <% @comments.each do |comment| %>
      <li><%= comment.body %></li>
    <% end %>
  </ul>
<% else %>
    Sorry, no comments to display.
<% end %>

或者将您的注释附加到 String 变量并在完成后返回它:

get '/show' do
  comments = Comment.all

  output = ""
  comments.each do |comment|
    output << "#{comment.body} <br />"
  end

  return output
end
于 2009-07-13T08:51:35.687 回答