Ruby on rails 无法使用iframe在show中呈现youtube视频
我有video:用户在一个名为video的类中输入的字符串,它是一个youtube链接 我的iframe一直给我错误“没有将nil隐式转换为字符串”。这是我的密码 我的视频/show.html.erbRuby on rails 无法使用iframe在show中呈现youtube视频,ruby-on-rails,iframe,Ruby On Rails,Iframe,我有video:用户在一个名为video的类中输入的字符串,它是一个youtube链接 我的iframe一直给我错误“没有将nil隐式转换为字符串”。这是我的密码 我的视频/show.html.erb <div class="row"> <div class="span8"> <h3>Videos</h3> <ol class="video"> &l
<div class="row">
<div class="span8">
<h3>Videos</h3>
<ol class="video">
<iframe width="560" height="349" src="<%= "http://www.youtube.com/embed/"+@video.code %>"></iframe>
</ol>
</div>
</div>
我的视频控制器:
def show
@video = Video.find(params[:id])
end
引发此错误是因为
@video.code
返回nil,Ruby尝试将字符串与nil合并,导致错误“没有将nil隐式转换为字符串”
要解决此问题,您可以在代码方法中返回一个空字符串,而不是nil:
def code
self.video.try(:split, '/').try(:last) || ''
end
此代码将拆分“/”上的视频链接,如果存在,则返回最后一个,如果不存在,则返回空字符串
需要记住的是:在任何情况下,您的方法都应该返回相同类型的对象。如果您的方法应该返回一个字符串,在任何情况下都不要返回nil
,请返回一个空字符串,并使用.present?
例如:
# helper
def pretty_fullname(user)
if user.nil?
return ""
else
return "#{user.first_name} #{user.last_name}"
end
end
# view
<h1><%= "Welcome " + pretty_fullname(@user) %></h1>
# This won't raise an error is user is nil.
#助手
def pretty_全名(用户)
如果user.nil?
返回“”
其他的
返回“#{user.first_name}{user.last_name}”
结束
结束
#看法
#如果用户为零,则不会引发错误。
引发此错误是因为@video.code
返回nil,Ruby尝试将字符串与nil合并,导致错误“没有将nil隐式转换为字符串”
要解决此问题,您可以在代码方法中返回一个空字符串,而不是nil:
def code
self.video.try(:split, '/').try(:last) || ''
end
此代码将拆分“/”上的视频链接,如果存在,则返回最后一个,如果不存在,则返回空字符串
需要记住的是:在任何情况下,您的方法都应该返回相同类型的对象。如果您的方法应该返回一个字符串,在任何情况下都不要返回nil
,请返回一个空字符串,并使用.present?
例如:
# helper
def pretty_fullname(user)
if user.nil?
return ""
else
return "#{user.first_name} #{user.last_name}"
end
end
# view
<h1><%= "Welcome " + pretty_fullname(@user) %></h1>
# This won't raise an error is user is nil.
#助手
def pretty_全名(用户)
如果user.nil?
返回“”
其他的
返回“#{user.first_name}{user.last_name}”
结束
结束
#看法
#如果用户为零,则不会引发错误。
使用新的“def code”后,我仍然收到相同的错误。code方法应在视频模型中实现,或应接收视频对象作为参数。在助手中引用self
并不是指实例化的对象,而是指上下文!成功了!!!youtube视频呈现。我在youtube上看到一个错误,说“发生了一个错误”。请稍后再试“,但现在我更接近了!谢谢:)也解决了这个问题。你太棒了,Yoshi。如果没有你,网络/现实/马里奥世界将是一个悲伤的地方。在使用新的“def code”后,我仍然会收到相同的错误。code方法应该在视频模型中实现,或者应该接收视频对象作为参数。在助手中引用self
并不是指实例化的对象,而是指上下文!成功了!!!youtube视频呈现。我在youtube上看到一个错误,说“发生了一个错误”。请稍后再试”,但现在我离你更近了一步!谢谢:)也解决了这个问题。你太棒了,Yoshi。没有你,网络/现实/马里奥世界将是一个悲伤的地方