Rails控制器Flash Notice添加外部链接的正确语法咨询
解决Rails控制器flash notice添加外部链接的语法错误
嘿,这个错误其实是语法写法不符合Rails参数规则导致的,我来帮你修正并解释清楚~
错误原因
你写的代码里,redirect_to root_path, flash[:success] = "..."这种写法是错的:redirect_to的第二个参数需要是一个配置哈希(比如redirect_to 路径, 选项键: 值),但你直接在这里写了赋值语句flash[:success] = ...,Ruby解析时会把这个当成参数处理,从而抛出TypeError (no implicit conversion of Symbol into String)的错误。
正确的两种写法
针对你的Rails 4.0.10版本,有两种靠谱的写法:
写法一:直接在redirect_to的哈希参数里设置flash
把flash内容放在redirect_to的第二个哈希参数中,同时注意把HTML字符串标记为html_safe(避免被转义):
redirect_to root_path, flash: { success: "Complete this quick survey. <a href='http://google.com'>Click here</a>".html_safe }
写法二:先单独设置flash,再执行跳转
这种写法更清晰,适合逻辑稍复杂的场景:
flash[:success] = "Complete this quick survey. <a href='http://google.com'>Click here</a>".html_safe redirect_to root_path
额外提醒
只要你在字符串上调用了html_safe,Rails在视图渲染flash时就会正常解析HTML链接,不会把<a>标签转义成纯文本。不过要确保视图里没有额外对flash内容做强制转义(比如用h()或html_escape方法)哦。
内容的提问来源于stack exchange,提问作者SupremeA
相关产品推荐
相关产品推荐

