2012-07-10 11 views
5

Czy można dodać formularz zagnieżdżony na stronie #show?Formularz zagnieżdżony ActiveAdmin na #show stronie

Teraz mam mój admin/posts.rb:

ActiveAdmin.register Post do 
    show do |post| 
    h2 post.title 
    post.comments.each do |comment| 
     row :comment do comment.text end 
    end 
    end 
end 

Wymienia wszystkie komentarze do postu. Teraz potrzebuję formularza, aby dodać nowe komentarze. Próbuję zrobić tak:

ActiveAdmin.register Post do 
    show do |post| 
    h2 post.title 
    post.comments.each do |comment| 
     row :comment do comment.text end 
    end 

    form do |f| 
     f.has_many :comments do |c| 
     c.input :text 
     end 
    end 
    end 
end 

i pojawia się błąd:

undefined method `has_many' for <form></form> :Arbre::HTML::Form

Modele post i komentarze wyglądać następująco:

class Post < ActiveRecord::Base 
    has_many :comments 
    accepts_nested_attributes_for :comments 
end 

class Comment < ActiveRecord::Base 
    belongs_to :post 
end 

Jak dodać tę formę na moją stronę z show? Dzięki

Odpowiedz

8

używam następujący przepis podczas dodawania tego typu informacji na stronie Pokaż

ActiveAdmin.register Post do 
     show :title => :email do |post| 
     attributes_table do 
      row :id 
      row :first_name 
      row :last_name 
     end 
     div :class => "panel" do 
      h3 "Comments" 
      if post.comments and post.comments.count > 0 
      div :class => "panel_contents" do 
       div :class => "attributes_table" do 
       table do 
        tr do 
        th do 
         "Comment Text" 
        end 
        end 
        tbody do 
        post.comments.each do |comment| 
         tr do 
         td do 
          comment.text 
         end 
         end 
        end 
        end 
       end 
       end 
      end 
      else 
      h3 "No comments available" 
      end 
     end 
     end 
    end 
+0

Jak dodać tekstowy tekst na komentarze? – WarLord

21

zrobiłem coś podobnego do relacji has_one:

ActiveAdmin.register Post do 
    show :title => :email do |post| 

    attributes_table do 
     rows :id, :first_name, :last_name 
    end 

    panel 'Comments' do 
     attributes_table_for post.comment do 
     rows :text, :author, :date 
     end 
    end 

    end 
end 

jeśli nie potrzebuję dodatkowej elastyczności rozwiązania "sorens" Założę się, że możesz z tym pracować.

+0

To rozwiązanie jest znacznie czystsze :) –

+0

Każdy pomysł, jak zmienić etykietę dla pozycji wiersza? –

+1

możesz zdefiniować '' 'rows''' oddzielnie i przekazać w takim bloku:' '' row ("twój tytuł") {post.first_name} '' ' – Jim

Powiązane problemy