Vraag Booleans weergeven in Active Admin als 'Ja' en 'Nee'


Hoe kan ik een actieve beheerder maken om 'Ja' en 'Nee' te laten zien in plaats van 'waar' en 'onwaar'.

Ik heb geprobeerd om te veranderen in de Engelse locale, maar dat werkt niet. Ik denk aan monkeypatching boolean lessen, maar dit lijkt vrij lelijk.

Kan ik nog iets anders doen?


10
2018-04-26 08:02


oorsprong


antwoorden:


Hier werkt dit, het geeft je een vinkje en kruis, maar het lijkt gemakkelijk te wijzigen.

https://gist.github.com/2574969

U moet uw rails-server opnieuw opstarten voordat dit werkt, omdat het de initializer active_admin.rb aanpast.

Natuurlijk creëert het een klasse, wat je wilt vermijden, maar bij gebrek aan iets anders werkt dit wel.


9
2018-06-02 15:58



Je zou dit graag willen doen:

index do
  id_column
  column(:published) do |story| 
    story.published? ? status_tag( "yes", :ok ) : status_tag( "no" )
  end
end

Hiermee worden de woorden "Ja" en "Nee" ingepakt in statuslabels die er redelijk goed uitzien.


48
2018-05-15 16:54



Probeer de voorwaarde direct in de actieve beheerder te gebruiken, zoals hieronder

column :column_name do|object|
    object.column_name? ? 'Yes' : 'No'
end

15
2018-05-10 06:20



Het is heel simpel,

Stel dat uw Booleaanse veldnaam actief is,

maak een methode met de naam status zoals

def status
  self.active ? "Yes" : "No"
end

Gebruik de staat als een normaal veld in actieve admin show of index.


3
2018-05-10 09:17



Zoals Ahmad zei dat je alleen maar daarvoor lessen wilt vermijden.

Dus er is nog een andere oplossing:

Voeg in je active_admin.en.yml locale (of wat dan ook) die twee regels toe:

en:
  "true": Yes
  "false": No

Voer vervolgens in het bestand app / admin / mijn_model.rb bijvoorbeeld Ja / Nee op de indexpagina uit:

column :published do |post|
      t(post.published.to_s)
end

Dus je hoeft alleen maar naar je Boolean-string te gaan en de "t" -functie (i18n-vertaling) te gebruiken, dus Rails zal in jouw lokale bestand de juiste vertaling zoeken en 'waar / niet waar' vervangen door 'Ja / Nee'.

Ik denk dat het een betere oplossing is, je volgt de "Rails Spirit" en het wordt gemakkelijker om een ​​active_admin-paneel in verschillende talen te hebben.

Het nadeel (want er is altijd een) het is dat je de "t" -functie moet gebruiken elke keer dat je booleans wilt vervangen door Ja / Nee ...

Het zou geweldig zijn om een ​​pull-verzoek te maken voor de actieve_admin-edelsteen die de mogelijkheid biedt om booleans te vervangen door het yml-bestand te veranderen zoals ik deed.

Maar ... tot het klaar is, werkt mijn oplossing prima. :)


2
2017-10-25 08:16



Als een extra afhankelijkheid je niet stoort, kijk dan eens https://github.com/parabuzzle/humanize_boolean die de functie automatiseert en i18n ondersteunt.


0
2018-06-25 13:20



Ik denk dat dit ook kan gaan, zonder dat er nog meer aapjes worden geplakt.

Voor rails 5.

column :signed_up?, sortable: 'signed_up' do |interest|
  ActiveRecord::Type::Boolean::FALSE_VALUES.exclude?(interest.signed_up)
end

Voor rails 4.

column :signed_up?, sortable: 'signed_up' do |interest|
  ActiveRecord::Type::Boolean::TRUE_VALUES.include?(interest.signed_up)
end

column :signed_up?, sortable: 'signed_up' do |interest|
  ActiveRecord::Type::Boolean::FALSE_VALUES.exclude?(interest.signed_up)
end

0
2017-09-14 15:16