如何修复这个令人烦恼的Syntastic Rails错误

20

我在Rails中有以下代码

<% @post.errors.full_messages.each do |msg| %>                                                                                                     
             <li><%= msg %></li>                                                                                                                              
<% end %>  

SyntasticCheck VIM插件一直显示这个错误

app/views/posts/new.html.erb[语法: 第12行 (1)]
1 app/views/posts/new.html.erb|12 警告| 可能将一个变量用于无效的上下文中


3
我不确定在这个问题上你能做什么,特别是因为它只是一个警告,告诉你你可能实际上并没有使用 msg。这可能与它如何解析 ruby 代码块以及 <%<%= 标记之间的区别有关。老实说,我希望它是 <% ,因为它不会渲染任何内容,这意味着在解析器的上下文中,这一行很可能是无用的。显然,在这种用例中它并不是无用的,但我可以理解关于它可能是无用的警告。 - engineersmnky
@engineersmnky 是的,我想那很有道理。当出现错误时,在文件中工作有点烦人。即使你执行“lclose”,它也会消失,但当你打开另一个文件并返回时,它又会弹出来。 - CodeCrack
这样的工具有跳过选定警告的能力。否则,您应该修补此工具,但这将更加困难。 - beornborn
2个回答

23
如果您只是不想再看到这些消息:
let g:syntastic_eruby_ruby_quiet_messages =
    \ {'regex': 'possibly useless use of a variable in void context'}

改进:在CentOS 5.8下,消息开头不再有“可能”。如果消息仍然出现,请从正则表达式中删除第一个单词。 - Gabor Garami
"可能在无效上下文中使用 .*,与其他类似的警告相匹配。" - Lluís
@lluis 那你需要使用一个更具体的模式。 - lcd047
@lcd047 不,我使用了“.*”来匹配它们 :) - Lluís
@lcd47 我认为将警告信息静默处理并不是一个好的做法,如果那个警告信息本应该不存在,可以向 Syntastic 项目报告一个 bug。 - Stoic Alchemist
显示剩余4条评论

17
如果警告可能在未来有所帮助,最好的做法是将 .to_s 添加到 msg 中,这样可以消除警告,但不会过滤未来的警告。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接