我是rails的新手,我有一个带有视频模型,控制器和视图的应用程序。
我想知道如何查询和显示我想要的视频,到目前为止我在使用视频控制器时非常好。
我有一个主页,我想显示本周最重要的视频,所以我按照教程的说法制作了一个带索引操作的欢迎控制器。
欢迎控制器里面有:
class WelcomeController < ApplicationController
def index
@highlighted_video = Video.where("highlight = true")
end
end
highlight是一个布尔属性。和索引视图:
<iframe width="100%" height="315" src="<%= @highlighted_video.url %>" frameborder="0" allowfullscreen></iframe>
但是我收到以下错误(url是我的数据库中的另一个视频属性):
undefined method `url' for #<ActiveRecord::Relation::ActiveRecord_Relation_Video:0x2507760>
我认为这会在视频控制器中起作用,但它不能帮助你。
答案 0 :(得分:1)
我会让我的控制器变瘦。假设我想要返回突出显示的第一条记录,我会在Video
模型中添加scope:
class Video < ActiveRecord::Base
# ...
scope :highlighted, -> { where(highlight: true).first }
# ...
end
这将返回突出显示的第一个记录。然后在控制器中我会这样做:
class WelcomeController < ApplicationController
def index
@highlighted_video = Video.highlighted
end
end
然后,假设您已在模型中定义了#url
方法,则视图中的代码应该可以正常工作。
答案 1 :(得分:1)
如果你想获得第一张唱片,试试这个
@highlighted_video = Video.where("highlight = true").first
当你访问@highlighted_video实例变量的属性时要小心,如果没有与你的查询匹配的记录,它将返回nil值,你将获得nil类的错误未定义方法url。
答案 2 :(得分:0)
您无法在url
上调用@highlighted_video
方法
在此变量中,您有video
def index
@highlighted_video = Video.where("highlight = true")
end
on index.html.erb
<% @highlighted_video.each do |video| %>
<iframe width="100%" height="315" src="<%= video.url %>" frameborder="0" allowfullscreen></iframe>
<% end %>