Datamapper, Sinatra, Haml: прикрепление и рендеринг комментариев из сообщения

У меня есть образец билета, к которому has n относятся комментарии (отношение "многие к одному").

Проблема в том, что я не могу отображать какие-либо комментарии, и форма не отправляет комментарии в базу данных.

Я могу вроде как сделать это из irb. Я могу добавлять комментарии в Tickets.comments, но я не могу вытащить отдельные комментарии - я могу вытащить коллекцию, но не понял, как с ней что-то делать. Это Class: DataMapper :: Associations :: OneToMany :: Collection, и в документации сказано: «Коллекция должна действовать как массив во всех смыслах».

Итак, 2 проблемы, требующие чтения и ввода:

1) публикация из веб-формы 2) итерация и рендеринг коллекции через haml, чего я, похоже, не могу сделать.

Более кровавые подробности:

У меня есть метод Синатры, который подтягивает

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"}/

person none    schedule 20.08.2010    source источник
comment
На данный момент я понимаю, что этот метод может быть не тем, что мне нужно, но изначально он казался подходящим.   -  person none    schedule 20.08.2010


Ответы (1)


Для тех, кто обращает внимание или имеет то же самое:

Это работает

Sinatra

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

Haml

@comments.each do |comment|
comment.comment

и т. д. и т. д., эт. al.

person none    schedule 21.08.2010