teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

途中経過の追記

2020/07/18 01:57

投稿

tessyman
tessyman

スコア8

title CHANGED
File without changes
body CHANGED
@@ -19,52 +19,15 @@
19
19
  調べたのですが出てこなかったです。
20
20
  これは可能なのでしょうか。
21
21
 
22
+ ### 途中経過
22
23
 
24
+ 試したことformat withと正規表現を用いてバリデーションを試みました。
23
25
 
24
- 一応、html_safeを使っている記述です。
25
- /app/helpers/application_heler.rb
26
+ /app/models/post.rb
26
27
  ```ruby
27
- module ApplicationHelper
28
- require "redcarpet"
29
- require 'rouge/plugins/redcarpet'
30
- class HTMLwithCoderay < Redcarpet::Render::HTML
28
+ validates :text, format: { with: ^(?!.*script).*$ }, presence: true
31
- include Rouge::Plugins::Redcarpet
32
- def block_code(code, language)
29
+ ```
33
- language = language.split(':')[0]
34
30
 
35
- case language.to_s
36
- when 'rb'
37
- lang = 'ruby'
38
- when 'yml'
39
- lang = 'yaml'
40
- when 'css'
41
- lang = 'css'
42
- when 'html'
31
+ しかし結果はSyntaxエラーになります。
43
- lang = 'html'
44
- when ''
45
- lang = 'md'
46
- else
47
- lang = language
48
- end
49
-
50
- CodeRay.scan(code, lang).div
51
- end
52
- end
53
-
54
- @@markdown = Redcarpet::Markdown.new Redcarpet::Render::HTML,
32
+ 書き方が間違っているのかそもそもformat withの場合このようなバリデーションはかけられないため
55
- autolink: true,
56
- space_after_headers: true,
33
+ カスタムバリデーターを使った方が良いのか模索中です。
57
- no_intra_emphasis: true,
58
- fenced_code_blocks: true,
59
- tables: true,
60
- hard_wrap: true,
61
- xhtml: true,
62
- lax_html_blocks: true,
63
- strikethrough: true,
64
- fencedcodeblocks:true,
65
- highlight: true
66
- def html(markdown)
67
- @@markdown.render(markdown).html_safe
68
- end
69
- end
70
- ```