2017-11-28 9 views
0

그래서 필자는 블로그에서 마크 다운을 구현하기 위해 CodeRay gem을 사용하기 위해 오랫동안 노력했습니다. 그것은 잠시 동안 일했다, 그렇지만 그것은 500 에러로 나의 블로그 페이지를 깨뜨릴 것이다.CodeRay를 사용하지 않고 RedCarpet을 사용하여 블로그에 자격 취득을 구현하려면 어떻게해야합니까?

CodeRay.scan 범인으로 확인되었다 :

class CodeRayify < Redcarpet::Render::HTML 
     def block_code(code, language) 
      CodeRay.scan(code, language).div 
     end 
    end 

그러나 나는 같이하는 코드를 리팩토링 후에도 : ​​

class CodeRayify < Redcarpet::Render::HTML 
     def block_code(code, language) 
      CodeRay.scan(code, language || :text).div 
     end 
    end 

나는 아직도 내가 비록 심지어 같은 문제가 있습니다 나는 문장의 시작 부분에 backticks가 없도록하고, 블로그에서 정확하게 markdown을 구현하고 있는지 확인하십시오.

나는 다음과 같은 오류를 얻을 :

2017-11-28T23:22:11.456525+00:00 app[web.1]: I, [2017-11-28T23:22:11.456458 #4] INFO -- : [d03d5e9e-c3c3-4117-85db-d80bd30d9178] Completed 500 Internal Server Error in 38ms (ActiveRecord: 8.5ms) 
2017-11-28T23:22:11.457321+00:00 app[web.1]: F, [2017-11-28T23:22:11.457251 #4] FATAL -- : [d03d5e9e-c3c3-4117-85db-d80bd30d9178] 
2017-11-28T23:22:11.457384+00:00 app[web.1]: F, [2017-11-28T23:22:11.457321 #4] FATAL -- : [d03d5e9e-c3c3-4117-85db-d80bd30d9178] ActionView::Template::Error (Invalid id given: console.log("Hello!");```): 
2017-11-28T23:22:11.457592+00:00 app[web.1]: F, [2017-11-28T23:22:11.457534 #4] FATAL -- : [d03d5e9e-c3c3-4117-85db-d80bd30d9178]  4: 
2017-11-28T23:22:11.457593+00:00 app[web.1]: [d03d5e9e-c3c3-4117-85db-d80bd30d9178]  5:  <% render partial: 'blogs/admin_actions', locals: {blog: blog} %> 
2017-11-28T23:22:11.457595+00:00 app[web.1]: [d03d5e9e-c3c3-4117-85db-d80bd30d9178]  6: 
2017-11-28T23:22:11.457595+00:00 app[web.1]: [d03d5e9e-c3c3-4117-85db-d80bd30d9178]  7:  <p><% markdown blog.body %></p> 
2017-11-28T23:22:11.457596+00:00 app[web.1]: [d03d5e9e-c3c3-4117-85db-d80bd30d9178]  8: 
2017-11-28T23:22:11.457597+00:00 app[web.1]: [d03d5e9e-c3c3-4117-85db-d80bd30d9178]  9: </div><!-- /.blog-post --> 
2017-11-28T23:22:11.457648+00:00 app[web.1]: F, [2017-11-28T23:22:11.457586 #4] FATAL -- : [d03d5e9e-c3c3-4117-85db-d80bd30d9178] 
2017-11-28T23:22:11.457718+00:00 app[web.1]: F, [2017-11-28T23:22:11.457654 #4] FATAL -- : [d03d5e9e-c3c3-4117-85db-d80bd30d9178] app/helpers/blogs_helper.rb:8:in `block_code' 
2017-11-28T23:22:11.457719+00:00 app[web.1]: [d03d5e9e-c3c3-4117-85db-d80bd30d9178] app/helpers/blogs_helper.rb:23:in `render' 
2017-11-28T23:22:11.457720+00:00 app[web.1]: [d03d5e9e-c3c3-4117-85db-d80bd30d9178] app/helpers/blogs_helper.rb:23:in `markdown' 
2017-11-28T23:22:11.457721+00:00 app[web.1]: [d03d5e9e-c3c3-4117-85db-d80bd30d9178] app/views/blogs/_blog.html.erb:7:in `_app_views_blogs__blog_html_erb__2572357733169721276_60667300' 
2017-11-28T23:22:11.457721+00:00 app[web.1]: [d03d5e9e-c3c3-4117-85db-d80bd30d9178] app/views/blogs/index.html.erb:5:in `_app_views_blogs_index_html_erb__3522254122931434539_63043240' 

이 내 자바 스크립트 블로그에 가격 인하를 쓰고 있어요 방법은 다음과 같습니다

Below are examples of four primitive data types that lay the foundation for all JavaScript programs. Primitive data types, as their name implies, are the simplest built-in forms of data. For example: 

```javascript 
console.log('New York City'); 
console.log(40.7); 
console.log(true); 
console.log(null); 
``` 

이 그것을 할 수있는 올바른 방법이다, 이유는받을 수 있나요 오류?

CodeRay.scan(code, language).div 

하지만이로 변경하는 경우에도 :

CodeRay.scan(code, language || :text).div 

나는 여전히 같은 문제를 얻을 과거에 Heroku가 로그에 따르면,이 문제입니다. 그래서 난 그냥 CodeRay없이 다음이 코드에 RedCarpet를 구현할 수있는 방법을 궁금 :

module BlogsHelper 
    def gravatar_helper user 
     image_tag "https://www.gravatar.com/avatar/#{Digest::MD5.hexdigest(user.email)}", width: 60 
    end 

    class CodeRayify < Redcarpet::Render::HTML 
     def block_code(code, language) 
      CodeRay.scan(code, language || :text).div 
     end 
    end 

    def markdown(text) 
     coderayify = CodeRayify.new(filter_html: true, hard_wrap: true) 

     options = { 
      fenced_code_blocks: true, 
      no_intra_emphasis: true, 
      autolink: true, 
      lax_html_blocks: true, 
     } 

     markdown_to_html = Redcarpet::Markdown.new(coderayify, options) 
     markdown_to_html.render(text).html_safe 
    end 

    def blog_status_color blog 
     'color: red;' if blog.draft? 
    end 
end 

답변

0

이 문제는 Coderay 또는 RedCarpet로하지 않을 수 있습니다. 그것은 단지 데이터 문제 일 수 있습니다. 이 오류 ActionView::Template::Error (Symbol or String expected, but NilClass given.)은 콘텐츠를 기대하지만 전혀 가져 오지 못함을 의미하므로 데이터 유효성 검사 문제 또는 그와 비슷한 것일 수 있습니다.

데이터 검증 문제를 해결하거나 CKEditor와 같은 대안으로 이동해야 할 수도 있습니다.