如何解决处理未定义的变量
| 我在一个视图中渲染局部视图:<%= render \'video\',:video => @video,:video_id => \'video_show_id\' %>
并在部分代码中包含以下代码:
<% if video_id %>
<%= link_to \"video\",video.video_url,:class => \"oembed\",:id => video_id %>
<% else %>
<%= link_to \"video\",:class => \"oembed\" %>
<% end %>
问题是该部分在我的应用程序中的许多地方都已渲染,在其他视图中,我不想将:video_id
传递给该部分。因此,我的应用程序抛出错误“ѭ3”未定义。我可以在其他视图中将:video_id => \"\"
传递给局部,但是由于局部在很多地方都有渲染,所以这很痛苦。有没有更简单的方法来解决这个问题?
解决方法
尝试
defined?
并不一定要紧,但实际上它是一个运算符。
<% if defined? video_id %>
,我认为处理此问题的更好方法是创建一个帮助程序,然后管理需要馈入部分变量的变量的值。就像是:
module VideoHelper
def show_video(video,options = {})
options[:id] ||= \"\"
render \'video\',:video => video,:video_id => options[:id]
end
end
现在,您不必将其显示在视图中那么长的局部线,而可以将其缩短为show_video调用。
另外,我发现从长远来看,这将提供更大的灵活性,而我不得不少考虑一下此时部分需要哪些变量以及是否定义它们。
,将支票更改为<% if defined? video_id %>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。