我正在关注迈克尔哈特尔的书,并且做了一个我似乎无法弄清楚的可选练习。
我有一个名为
的助手module MicropostsHelper
def wrap(content)
sanitize(raw(content.split.map{ |s| wrap_long_string(s) }.join(' ')))
end
private
def wrap_long_string(text, max_width = 30)
zero_width_space = "​"
regex = /.{1,#{max_width}}/
(text.length < max_width) ? text :
text.scan(regex).join(zero_width_space)
end
end
我正在尝试包装应该是来自用户输入的字符串的内容。在我的控制器里,我有,
def create
flash[:notice] = "[][] is...", params[:micropost][:content]
cleaned = wrap(params[:micropost][:content])
@micropost = current_user.microposts.build(cleaned)
...
但是我一直在使用未定义的方法'raw'。有人能解释为什么吗?
是否有显示方法示例的api?
答案 0 :(得分:4)
您可以在html视图中使用string.html_safe
或r 'string'
答案 1 :(得分:2)
您可以直接在html.erb文件中使用wrap方法:
当时:
<span class="content"><%= micropost.content %></span>
变成了:
<span class="content"><%= wrap(micropost.content) %></span>