6

これをシナトラでやろうとすると、

クラス コメント
    インクルード DataMapper::Resource
    プロパティ:id、シリアル
    プロパティ:本体、テキスト
    プロパティ:created_at、DateTime
終わり

get '/show' do
  コメント = Comment.all
  @comment.each do |コメント|
    「#{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 %>

または、コメントを文字列変数に追加し、完了したらそれを返します。

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 に答える