Class: Decidim::ContentRenderers::ProposalRenderer
- Inherits:
-
BaseRenderer
- Object
- BaseRenderer
- Decidim::ContentRenderers::ProposalRenderer
- Defined in:
- lib/decidim/content_renderers/proposal_renderer.rb
Overview
A renderer that searches Global IDs representing proposals in content and replaces it with a link to their show page.
e.g. gid://<APP_NAME>/Decidim::Proposals::Proposal/1
Constant Summary collapse
- GLOBAL_ID_REGEX =
Matches a global id representing a Decidim::User
%r{gid:\/\/([\w-]*\/Decidim::Proposals::Proposal\/(\d+))}i
Instance Method Summary collapse
-
#render ⇒ String
Replaces found Global IDs matching an existing proposal with a link to its show page.
Instance Method Details
#render ⇒ String
Replaces found Global IDs matching an existing proposal with a link to its show page. The Global IDs representing an invalid Decidim::Proposals::Proposal are replaced with ‘???’ string.
20 21 22 23 24 25 26 27 28 |
# File 'lib/decidim/content_renderers/proposal_renderer.rb', line 20 def render content.gsub(GLOBAL_ID_REGEX) do |proposal_gid| proposal = GlobalID::Locator.locate(proposal_gid) Decidim::Proposals::ProposalPresenter.new(proposal).display_mention rescue ActiveRecord::RecordNotFound proposal_id = proposal_gid.split("/").last "~#{proposal_id}" end end |