Datamapper, Sinatra, Haml: прикрепление и отображение комментариев из поста - PullRequest
0 голосов
/ 20 августа 2010

У меня есть модель Ticket, которая has n Комментарии, принадлежащие ему (отношения многие к одному).

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

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

Итак, 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"}/

1 Ответ

1 голос
/ 21 августа 2010

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

Это работает

Синатра

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

Хамл

@comments.each do |comment|
comment.comment

и т. Д., И т. Д., И т. Д.,и др.и др.

...