Links mais inteligentes para artigos

O intermediário não dá uma indicação quando os artigos vinculados ao seu site estão corrompidos. Exemplos da causa são a digitação incorreta do caminho do arquivo, exclusão do (s) artigo (s) vinculado (s) e renomeação do arquivo do artigo.

Usar este auxiliar de link para vincular artigos gerará um erro nas seguintes situações:

  • Quando o caminho relativo especificado está faltando um ‘/’ inicial.
  • Quando o caminho relativo especificado está faltando um final ‘/’.
  • Quando um artigo não existe para o caminho relativo.
def link_to_article(relative_path)
raise
ArgumentError, "Argument #{relative_path} is missing beginning '/'" unless relative_path.start_with?('/')
raise
ArgumentError, "Argument #{relative_path} is missing ending '/'" unless relative_path.end_with?('/')

article
= blog.articles.detect { |a| a.url == relative_path }

raise
ArgumentError, "Argument #{relative_path} doesn't exist" unless article.present?

link_to article
.data.title.titleize, article.url, title: "Read article: #{article.data.title.titleize}"

end

Alternativamente, se você deseja que o auxiliar não seja restritivo nas barras:

def link_to_article(relative_path)
relative_path
.insert(0, '/') unless relative_path.start_with?('/')
relative_path
<< '/' unless relative_path.end_with?('/')

article
= blog.articles.detect { |a| a.url == relative_path }

raise
ArgumentError, "Argument #{relative_path} doesn't exist" unless article.present?

link_to article
.data.title.titleize, article.url, title: "Read article: #{article.data.title.titleize}"

end