2012-04-05 11 views
12

Mam ustawiarkę rails_admin dla interfejsu administratora mojej witryny.Rails Admin Zmień listę/pokaż widok, aby dodać nową/dostosowaną kolumnę

Dla jednego z modeli chcę wyświetlić dodatkową kolumnę.

Powiedz, że mam nazwę, telefon, adres e-mail, adres URL zdjęcia, rangę itp. W moim Modelu (powiedzmy Uczeń). Następnie muszę wyświetlić kolumny: Nazwa | Ranking | Podgląd (dodatkowa kolumna)

W kolumnie podglądu chcę wyświetlić niektóre renderowane html na podstawie atrybutów (e-mail, obraz, adres URL itp.) Dla każdego "ucznia".

Znalazłem sposób na włączenie części do edycji/aktualizacji/tworzenia w celu dostarczenia pól/formularzy zgodnie z naszym częściowym. Ale ta sama implementacja włączania częściowego kończy się niepowodzeniem na liście/pokazie.

Czy istnieje jakiś sposób dodania częściowego, aby pokazać renderowaną zawartość, w widoku listy/show dla modelu ...?

Edit: Kod dodany

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 

To pokazuje się następujące kolumny w rails_admin

Code | Priorytet | Nazwa | URL | Telefon | Logo | Zawartość

to czego chcę to Kod | Priorytet | Podgląd

podglądu, w którym w kolumnie chcę pokazać html renderowanie treści, jak:

blah.html (tylko dla np html na przykład tutaj chcę uczynić w taki sposób, że jest wyświetlany w jednym stron, więc jest reprezentacyjny dla widzenia administratora zbyt)

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

Proszę być bardziej konkretny. Pokaż trochę kodu. –

+0

Dodałem kod i określone szczegółowe wymagania .. –

Odpowiedz

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 

Streszczenie:

Pokaż/li st nie używaj elementów na wyjście. Ostatni punkt nadrzędny to pretty_value.

+0

Co jeśli "podgląd" powinien zawierać niektóre dane z jakiegoś modelu belongs_to? Powiedzmy, Payout.Account.Currency.code? Użyłem "% {# {payout.account.currency.code}}" zamiast "# {util.name} # {util.phone} # {util.logo}" i działa dobrze na ekranie, ale mogę ' t pracuj nad "kodem". Jak sprawić, by pola_obowiązania działały na powiązanych polach modelu? – Zelid

+1

To nie działa dla mnie, zobacz moją odpowiedź poniżej – Evan

+0

To zadziała, ale musisz dodać metodę w modelu narzędzia, podgląd, zwracając dowolną wartość. – SKR

7

Administratorzy Railsów nazywają te "wirtualne" typy pól. Najprostszym sposobem jest stworzenie metody modelu, a następnie odwoływać się do niego go w swoim liście/koncert:

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

Mimo że to zadziała, lepiej nie umieszczać tej logiki widoku w modelu. – 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

Z metody podglądu zwróć wartość niepustą. – 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 
Powiązane problemy