Rails двойные кавычки всегда избегали - PullRequest
1 голос
/ 02 апреля 2012

Я настраивал подсветку синтаксиса для своего блога, когда столкнулся с этой проблемой.'"' всегда экранирован ... Вот мой код:

# in application_helper.rb
def coderay(content)
  defaults = {...}      

  content.gsub!(/\<pre\>\<code class=\"(.+?)\"\>(.+?)\<\/code\><\/pre\>/m) do
    CodeRay.scan($2, $1).div(defaults)
  end
end

def markdown(text)
  options = {...}    

  renderer = Redcarpet::Markdown.new(Redcarpet::Render::HTML, options)
  coderay(renderer.render(text)).html_safe
end

#in view file
...
<%= markdown @post.body %>
...

Все работает нормально, за исключением того, что всегда экранируются двойные кавычки (").Перепробовал много методов, но ни один из них не работал.

Любая помощь будет оценена!

1 Ответ

1 голос
/ 04 апреля 2012

Наконец-то я использовал менее «изящный» способ решения этой проблемы.На случай, если кто-то еще столкнется с этой проблемой.

Я создал новый метод следующим образом:

  def unescape(content)
    content.gsub!(/(&quot;|&#39;|&amp;|&lt;|&gt;)/) do
      case $1
        when "&quot;"
          '"'
        when "&#39;"
          "'"
        when "&amp;"
          "&"
        when "&lt;"
          "<"
        when "&gt;"
          ">"
      end
    end
  end

Как правило, этот метод просто делает unescape.

Перед выполнениемCodeRay.scan ($ 2, $ 1) .div (по умолчанию), я использовал метод unescape для удаления $ 2, тогда все идет хорошо.

Если кто-то знает лучший способ, пожалуйста, сообщите мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...