cna*_*reu 5 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2
我的目标是在段落中找到类似'b1234'的内容并将其替换为:
<a href=http://bugtracker.com/bug/1234>b1234</a>
Run Code Online (Sandbox Code Playgroud)
我用普通的红宝石制作了这个:
"I fixed b1234 today".gsub(/(b([0-9]+))/i, '<a href=http://bugtracker.com/bug/\2>\1</a>')
Run Code Online (Sandbox Code Playgroud)
它输出:
=> "I fixed <a href=http://bugtracker.com/bug/1234>b1234</a> today"
Run Code Online (Sandbox Code Playgroud)
我在rails视图中有以下内容:
<%= post.content %>
Run Code Online (Sandbox Code Playgroud)
注意:创建帖子时,我不会在我的数据库中存储HTML链接代码.
如果我做:
<%= post.content.gsub(...) %>
Run Code Online (Sandbox Code Playgroud)
我在输出文件中转义了html:
<a href= ... instead of <a href= ...
Run Code Online (Sandbox Code Playgroud)
... 我想要那种行为,我不希望用户发布HTML(iframe会很吓人!).
但是,我怎么能在不牺牲安全性的情况下获得我想要的查找和替换功能呢?也许是Javascript方法?
谢谢!
将等号加倍。<%== post.content.gsub(...) %>。例如,如果用户还可能在此内容中编写 HTML,那么您需要对其进行清理,以便仅允许指定的 HTML 标签。
编辑| 实际上,只要您要替换的搜索字符串不包含 HTML 特殊字符,您就可以转义该字符串,然后执行 gsub:
<%== h(post.content).gsub(...) %>
Run Code Online (Sandbox Code Playgroud)