2010-08-20 4 views
0

J'ai un modèle de billet qui has n Commentaires appartenant à lui (plusieurs à une relation).Datamapper, Sinatra, Haml: attacher et rendre Commentaires d'un poste

Le problème est que je ne peux pas afficher les commentaires et que le formulaire ne publie pas les commentaires dans la base de données.

Je peux un peu faire ça avec irb. Je peux ajouter des commentaires à tickets.comments, mais je ne peux pas tirer de commentaires individuels - je peux remonter la collection mais je n'ai pas compris comment faire quelque chose avec ça. Il est une classe: DataMapper :: Associations :: OneToMany :: Collection et documentation dit « Une collection doit agir comme un tableau dans tous les sens »

donc 2 questions nécessitant la lecture et entrée:

1) l'affichage de le formulaire Web 2) faire des itérations et rendre la collection via haml, ce que je n'arrive pas à faire.

détails Plus gore:

J'ai une méthode Sinatra qui tire vers le haut

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

modèle 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"}/ 
+0

À ce stade, je me rends compte que la méthode n'est peut-être pas ce que je devais faire, mais cela semblait une méthode appropriée à l'origine. – none

Répondre

1

Pour toute personne portant une attention ou ayant le même:

Cette fonctionne

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 

etc, etc, et. Al.

Questions connexes