请教关于redcarpet中tables的问题!


#1

各位小伙伴好,我在用redcarpet这个gem的时候遇到了无法解析表格的问题,环境是rails 4.0 ,ruby是2.0,redcarpet是3.2.2.

代码如下:

结果如下:

加tables这个option,无法解释为表格,请问是哪里的问题或是缺少了啥?


#2

測試的時候請用最簡單的方式來測,然後慢慢增加,類似以下

require 'redcarpet'
r = Redcarpet::Render::HTML.new
source = "\nFirst Header  | Second Header\n------------- | -------------\nContent Cell  | Content Cell\nContent Cell  | Content Cell\n"
Redcarpet::Markdown.new(r , {tables: true}).render(source)
#=> "<table><thead>\n<tr>\n<th>First Header</th>\n<th>Second Header</th>\n</tr>\n</thead><tbody>\n<tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n<tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n</tbody></table>\n"

#3

回复Joker哥,我知道是啥事了,因为用了sanitize,查看默认属性ActionView::Base.sanitized_allowed_tags,它没有包含table等元素,也就是把table等元素过滤掉,因此,要在config/application.rb中加入

config.action_view.sanitized_allowed_tags = %w[table tr td thead th]
config.action_view.sanitized_allowed_attributes = %w[rel id class style]

这样才可以 解决问题,用raw,html_safe没这个问题,但是变成了裸奔,不安全。

现在还有个问题,如何为这些table加添加效果呢?默认是没有线框显示的,如下:


#4

搞定了,自己用css控制。只是奇怪,redcarpet本身没有提供。各位有没有更好的方法,请告知,谢谢!


#5

你說的那個本來就該用CSS控制就是了,倒是redcarpet有提供覆寫,所以自己要的功能可以自己再弄出來之類的


#6

求问,怎么用css来完成tables的包装?


#7

『css来完成tables的包装?』不懂意思,你應該先檢查 HTML 是否正確,然後用 CSS 美化?你可以把你的語法或 HTML 丟上來看看,才有辦法回答哩


#8

我的markdown不支持table。不知道怎么处理。


#9

也调用了gem redcarpet来支持markdown


#10

我上面有一段『測試的時候請用最簡單的方式來測,然後慢慢增加,類似以下』
從這邊開始測試吧?不然你只會原地打轉而已,所以從 console ( rails c ) 開始測試,並把語法貼出來討論如何?


#11

表示,在js里写“require redacarpet“的时候会报错。显示没有找到对应的”redacarpet“


#12

前後端分離 … 你要不要去補一補前後端的觀念呢?我們在 youtube 上面有新手教學,你可以搜尋我們討論區的名稱應該就可以找到了

redacarpet 是 Ruby / Rails 在用的,而非 JavaScript,而你要前端相同支援並能 review 的話,你可以找類似 JavaScript / jQuery 之類的 lib / plug-in 才是?然後前端一個後端一個就可以彼此產出一樣的結果才是

類似這邊下面的功能是類似這種工具寫成的,就右邊是 review 即可,所以只需要 reader

http://showdownjs.github.io/demo/

玩玩看唄?


#13

好的,太感谢你了!!!