2015-09-29 5 views
0

Я использую Redcarpet для выделения синтаксиса в моем приложении блога Rails.Сочетание усечения с уценкой Redcarpet в Rails: ссылки не работают

В моих сообщениях/index.html.erb, я хочу обрезать записи в блоге, чтобы просмотреть первые несколько предложений (или абзацев). Пользователь должен иметь возможность нажать «читать больше» в конце усеченного сообщения, чтобы прочитать весь пост в блоге. К сожалению, ссылка «читать дальше» не работает с Redcarpet (когда я не использую мой метод уценки (см. Ниже), ссылка работает нормально). Как я могу это исправить? Должен ли я использовать другие варианты в Redcarpet?

Мой метод уценки в /helpers/application_helper.rb с помощью Redcarpet:

def markdown(content) 
    renderer = HTMLwithPygments.new(hard_wrap: true, filter_html: true) 
    options = { 
    autolink: true, 
    no_intra_emphasis: true, 
    disable_indented_code_blocks: true, 
    fenced_code_blocks: true, 
    lax_html_blocks: true, 
    strikethrough: true, 
    superscript: true 
    } 

    Redcarpet::Markdown.new(renderer, options).render(content).html_safe 
end 

/views/posts/index.html.erb

<%= markdown (truncate(post.content, 
         length: 600, 
         separator: ' ', 
         omission: '... ') { 
         link_to "read more", post 
       }) %> 

Кстати: я am looping через переменную @posts, поэтому «post.content» дает мне содержание одного сообщения, а «post» дает мне путь сообщения.

Текст «читать больше» появляется, но вы не можете щелкнуть по нему. Когда я оставляю метод «уценки», «read more» -link работает нормально.

Как я могу создать ссылку с помощью метода «уценки»?

ответ

1

Эта ссылка не Markdown, хотя это HTML. Может быть, изменить его на Markdown?

<%= markdown(truncate(post.content, length: 600, 
         separator: ' ', omission: '... ') { 
      "[read more](#{post_path(post)})" 
    }) %> 

Изменение post_path на что-то подходящее, если это не так.

+0

К сожалению, это не работает, так как мой метод «уценки» принимает только один аргумент/параметр. – OhDaeSu

+1

Ahh, извините, только что заметил, что ... Я обновлю. Попробуй это. –

+0

Ничего себе, потрясающе, спасибо, это работает. Не могли бы вы объяснить, почему ваше решение работает/что происходит? – OhDaeSu

 Смежные вопросы

  • Нет связанных вопросов^_^