Datamapper,Sinatra,Haml:从帖子附加和呈现评论

时间:2010-08-20 18:10:10

标签: ruby sinatra haml datamapper

我有一张模型票据has n评论属于它(多对一关系)。

问题是我无法呈现任何评论,表格也不会将评论发布到数据库。

我可以从irb那样做。我可以为ticket.comments添加评论,但我无法提取个人评论 - 我可以提取集合,但还没弄明白如何用它做任何事情。它是一个类:DataMapper :: Associations :: OneToMany :: Collection和文档说“一个集合应该像各种各样的数组一样”

所以需要阅读和输入的2个问题:

1)从网络表单发布 2)迭代并通过haml渲染集合,我似乎无法做到。

更多血腥的细节:

我有一个提升的Sinatra方法

get '/:thisticket' do
   @ticket=Ticket.first(:slug=>params[:slug])
   if @ticket
       haml :showticket

Haml模板

%div{:class => "ticket"}
 %h1
  = @ticket.slug

= @ticket.comments.all              (returns the # symbol to any html page)

- @ticket.comments.all do |comment|
 %h4
  = comment.a_comment
 %h4
  = comment.created_at
 %h4
  = comment.id                       (this block shows nothing on a rendered page) 

%center
 %form{:action => "/#{@thisticket.slug}/update", :enctype => "text/plain", :method => "post"}
 comments
 %br/
 %textarea{:id => "a_comment",:name => "a_comment", :rows => "5"}
 :preserve
 %br/
 %input{:type => "submit", :value => "post"}/

1 个答案:

答案 0 :(得分:1)

对于任何关注或拥有相同内容的人:

这有效

get '/:thisticket' do
   @ticket=Ticket.first(:thisticket=>params[:thisticket])
   @comments=@ticket.comments.all(:order => [ :created_at.desc ])
   if @ticket
       haml :showticket

Haml的

@comments.each do |comment|
comment.comment
等等,等等。人