2012-04-05 5 views
12

Ich habe die rails_admin für die Admin-Schnittstelle meiner Website eingerichtet.Rails Admin Liste ändern/Show anzeigen, um neue/benutzerdefinierte Spalte hinzuzufügen

Für eines der Modelle möchte ich eine zusätzliche Spalte anzeigen.

sagen, ich habe Name, Telefon, E-Mail, Bild URL, Rang usw. Attribute in meinem Modell (sagen Student). Dann muss ich Spalten anzeigen: Name | Rang | Vorschau (zusätzliche Spalte)

In der Vorschauspalte möchte ich einige gerenderte HTML auf Basis von Attributen (E-Mail, Bild, URL etc.) für jeden 'Schüler' anzeigen.

Ich habe den Weg gefunden, eine partielle für edit/update/create, um Felder/Formulare nach unseren Teil zu bieten. Aber die gleiche Implementierung von Partial ist in der Liste/Show fehlgeschlagen.

Also gibt es eine Möglichkeit, die teilweise hinzufügen, um gerenderten Inhalt, in der Liste/show-Ansicht für ein Modell ... zeigen?

bearbeiten: Code hinzugefügt

config.model Utility do 
    list do 
    field :code 
    field :priority 
    field :name 
    field :url 
    field :phone 
    field :logo 
    field :content 
    sort_by :priority 
    items_per_page 100 
    end 
end 

Dies zeigt sich folgende Spalten in rails_admin

-Code | Priorität | Name | URL | Telefon | Logo | Inhalt

was ich will ist Code | Priorität | Vorschau

, in dem in Spalte Vorschau i einen HTML-Rendering Inhalt zeigen, wollen:

blah.html (nur zB html zum Beispiel hier möchte ich in einer Art und Weise machen, es in einem angezeigt Seiten, so ist es für die Admin-Ansicht zu)

<div class="blah"> 
    <%=util.name%> <%=util.phone%> <%=util.logo%> #usage with proper divs/tags/rendering 
</div > 
+0

Bitte konkreter sein. Zeigen Sie etwas Code. –

+0

Ich habe den Code hinzugefügt und detaillierte Anforderung angegeben. –

Antwort

21
config.model Utility do 
    configure :preview do 
    pretty_value do 
     util = bindings[:object] 
     %{<div class="blah"> 
      #{util.name} #{util.phone} #{util.logo} 
     </div >} 
    end 
    children_fields [:name, :phone, :logo] # will be used for searching/filtering, first field will be used for sorting 
    read_only true # won't be editable in forms (alternatively, hide it in edit section) 
    end 



    list do 
    field :code 
    field :priority 
    field :preview 
    end 

    show do 
    field :code 
    field :priority 
    field :preview 
    end 

    # other sections will show all fields 
end 

Zusammenfassung vorzeigbar:

Show/li st keine Teiltöne für die Ausgabe verwenden. Der letzte übergeordnete Punkt ist pretty_value.

+0

Was ist, wenn "Vorschau" einige Daten von einigen gehört_zum Modell enthalten soll? Lassen Sie uns Payout.Account.Currency.code sagen? Ich habe "% {# {payout.account.currency.code}}" anstelle von "# {util.name} # {util.phone} # {util.logo}" verwendet und es funktioniert gut für die Anzeige, aber ich kann ' t Sortierung auf "Code" funktioniert. Wie kann children_fields in assoziierten Modellfeldern arbeiten? – Zelid

+1

Dies funktioniert nicht für mich, siehe meine Antwort unter – Evan

+0

Dies funktioniert, aber Sie müssen eine Methode im Utility-Modell hinzufügen, Vorschau, Rückgabe eines beliebigen Wertes. – SKR

7

Der Rails-Administrator ruft diese "virtuellen" Feldtypen auf. Der einfachste Weg ist es, eine Methode auf dem Modell zu machen, und dann, um sie in Ihrer Liste/show beziehen:

class ModelName < ActiveRecord::Base 

    def invite_link 
    %{<a href="http://site.com/#{self.uid}">invite link</a>}.html_safe 
    end 

    rails_admin do 
    configure :invite_link do 
     visible false # so it's not on new/edit 
    end 

    list do 
     field :name 
     field :invite_link 
    end 

    show do 
     field :name 
     field :invite_link 
    end 
    end 
end 
+0

Auch wenn dies funktionieren würde, ist es besser, diese Ansichtslogik nicht in das Modell zu integrieren. – hcarreras

-1
class Utility < ActiveRecord::Base 
    def preview 
    name 
    end 
end 

config.model Utility do 
    configure :preview do 
    pretty_value do 
     util = bindings[:object] 
     %{<div class="blah"> 
      #{util.name} #{util.phone} #{util.logo} 
     </div >} 
    end 
    children_fields [:name, :phone, :logo] # will be used for searching/filtering, first field will be used for sorting 
    read_only true # won't be editable in forms (alternatively, hide it in edit section) 
    end 



    list do 
    field :code 
    field :priority 
    field :preview 
    end 

    show do 
    field :code 
    field :priority 
    field :preview 
    end 

    # other sections will show all fields 
end 
+0

Geben Sie aus der Vorschaumethode einen beliebigen Wert ungleich null zurück. – SKR

-1
class ModelName < ActiveRecord::Base 
    rails_admin do 
    list do 
     field :job_title 
     field :required_experiance 
     field :salary 
     field :technical_skills 
     field :non_technical_skills  
    end 

    create do 
     field :job_title, :enum do 
     help 'Please select Job Title' 
     enum do 
      ['Business Analyst', 'Trainee Business Analyst', 'Mobile/Web Developer', 
      'iOS Developer', 'Graphic Designer', 'System Administrator', 'Content Writer'] 
     end 
     end 

     field :job_type do 
     help 'e.g. Developer, Management' 
     end 

     field :undergraduate_degree, :enum do 
     help 'Please select UG Degree' 
     enum do 
      [ 'BE', 'BCA', 'B.Tech','BCs', 'BSc', 'BBA', 'BA', 'BCom', 'BSL'] 
     end 
     end 

     field :postgraduate_degree, :enum do 
     help 'Please select PG Degree' 
     enum do 
      [ 'ME', 'MCA', 'M.Tech', 'MCs', 'MSc', 'MBA', 'MCM', 'MMM', 'MA', 'MCom'] 
     end 
     end 

     field :required_experiance, :enum do 
     help 'Please select Year' 
     enum do 
      [ 'Select Year', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] 
     end 
    end 
    end 
end 
Verwandte Themen