diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 70828c01a..046890df8 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,7 +1,15 @@ module ApplicationHelper - def tags(debate) - debate.tag_list.sort.map { |tag| link_to sanitize(tag), debates_path(tag: tag) }.join('').html_safe + def tags(debate, limit = nil) + tag_names = debate.tag_list_with_limit(limit) + + tag_names.sort.map do |tag| + link_to sanitize(tag), debates_path(tag: tag) + end.join('').html_safe.tap do |output| + if limit && extra_tags = debate.tags_count_out_of_limit(limit) + output.concat(link_to("#{extra_tags}+", debate_path(debate))) + end + end end def percentage(vote, debate) diff --git a/app/models/debate.rb b/app/models/debate.rb index 26fd2dbf0..2d9dab815 100644 --- a/app/models/debate.rb +++ b/app/models/debate.rb @@ -42,6 +42,15 @@ class Debate < ActiveRecord::Base super.try :html_safe end + def tag_list_with_limit(limit = nil) + tags.most_used(limit).pluck :name + end + + def tags_count_out_of_limit(limit = nil) + count = tags.count - limit + count < 0 ? 0 : count + end + protected def sanitize_description diff --git a/app/views/debates/_debate.html.erb b/app/views/debates/_debate.html.erb index f8343e8be..56a5127c5 100644 --- a/app/views/debates/_debate.html.erb +++ b/app/views/debates/_debate.html.erb @@ -15,7 +15,7 @@ <%= link_to debate.description, debate %>
- <%= render "shared/tags", debate: debate %> + <%= render "shared/tags", debate: debate, limit: 5 %> diff --git a/app/views/shared/_tags.html.erb b/app/views/shared/_tags.html.erb index 8be6da579..93c94b571 100644 --- a/app/views/shared/_tags.html.erb +++ b/app/views/shared/_tags.html.erb @@ -1,3 +1,5 @@ +<%- limit ||= nil %> + <% if debate.tags.any? %> - -<% end %> \ No newline at end of file + +<% end %> diff --git a/app/views/welcome/_featured_debate.html.erb b/app/views/welcome/_featured_debate.html.erb index 93626b4c7..a1992e337 100644 --- a/app/views/welcome/_featured_debate.html.erb +++ b/app/views/welcome/_featured_debate.html.erb @@ -14,7 +14,7 @@ <%= link_to featured_debate.description, featured_debate %> - <%= render "shared/tags", debate: featured_debate %> + <%= render "shared/tags", debate: featured_debate, limit: 5 %>