微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

处理未定义的变量

如何解决处理未定义的变量

| 我在一个视图中渲染局部视图:
<%= 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 举报,一经查实,本站将立刻删除。