ruby on rails-处理未定义的变量



我在一个视图中渲染一个分部:

<%= 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", video.video_url, :class => "oembed" %>
<% end %>

问题是,这个分部在我的应用程序中的许多地方都会被渲染,而在其他视图中,我不想将:video_id传递到分部中。因此,我的应用程序抛出一个video_id未定义的错误。我可以在其他视图中将: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 %>

相关内容

  • 没有找到相关文章

最新更新