Малко парче код, което ми се струва достатъчно интересно че да го постна.
development=# \d comments Table "public.comments" Column | Type | Modifiers ------------+-----------------------------+-------------------- .... spam | boolean | not null default false approved | boolean | not null default false ...
Трябва ми име за CSS клас (pending, spam, published), като и текстов низ да покажа на потребителя (Очаква одобрение, Спам, Публикуван). Може би нещо от тоя род?
module Admin::CommentsHelper
def status(comment)
if comment.approved?
return :published
else
if comment.spam?
return :spam
else
return :pending
end
end
end
def status_name(comment)
if comment.approved?
#…
End
end
end
def status(comment)
if comment.approved?
return :published
else
if comment.spam?
return :spam
else
return :pending
end
end
end
def status_name(comment)
if comment.approved?
#…
End
end
end
Не, стана грозно. Я да пробваме по друг начин:
module Admin::CommentsHelper
def status(comment)
{
[false, false] => :pending,
[false, true] => :spam,
[true, false] => :published,
[true, true] => :published
}[[comment.approved?, comment.spam?]]
end
def status_name(comment)
{
:pending => "Очаква одобрение",
:spam => "Спам",
:published => "Публикуван"
}[status(comment)]
end
еnd
def status(comment)
{
[false, false] => :pending,
[false, true] => :spam,
[true, false] => :published,
[true, true] => :published
}[[comment.approved?, comment.spam?]]
end
def status_name(comment)
{
:pending => "Очаква одобрение",
:spam => "Спам",
:published => "Публикуван"
}[status(comment)]
end
еnd
Секси! Май съм го споменавал?
Готино 🙂