Ruby on rails 欢迎使用的命名错误#索引
我是rails新手,我有一个带有视频模型、控制器和视图的应用程序 当我使用视频控制器时,我正在研究如何查询和显示我想要的视频 我有一个主页,在那里我想显示本周最重要的视频,所以我制作了一个带有索引操作的欢迎控制器,正如教程所说 在欢迎控制器内,我有:Ruby on rails 欢迎使用的命名错误#索引,ruby-on-rails,ruby,methods,controller,undefined,Ruby On Rails,Ruby,Methods,Controller,Undefined,我是rails新手,我有一个带有视频模型、控制器和视图的应用程序 当我使用视频控制器时,我正在研究如何查询和显示我想要的视频 我有一个主页,在那里我想显示本周最重要的视频,所以我制作了一个带有索引操作的欢迎控制器,正如教程所说 在欢迎控制器内,我有: class WelcomeController < ApplicationController def index @highlighted_video = Video.where("highlight
class WelcomeController < ApplicationController
def index
@highlighted_video = Video.where("highlight = true")
end
end
class WelcomeController
highlight是一个布尔属性。以及索引视图:
<iframe width="100%" height="315" src="<%= @highlighted_video.url %>" frameborder="0" allowfullscreen></iframe>
但我得到以下错误(url是我数据库中的另一个视频属性):
的未定义方法“url”#
我以为这会像在视频控制器中一样工作,但它没有帮助。你不能在
@highlighted\u视频上调用url
方法
在这个变量中,有一个视频数组
def index
@highlighted_video = Video.where("highlight = true")
end
关于index.html.erb
<% @highlighted_video.each do |video| %>
<iframe width="100%" height="315" src="<%= video.url %>" frameborder="0" allowfullscreen></iframe>
<% end %>
我会保持我的控制器很瘦。假设我想返回突出显示的第一条记录,我会在视频
模型中添加:
class Video < ActiveRecord::Base
# ...
scope :highlighted, -> { where(highlight: true).first }
# ...
end
class-Video{where(高亮显示:true).first}
# ...
结束
这将返回突出显示的第一条记录。然后在控制器中,我只需执行以下操作:
class WelcomeController < ApplicationController
def index
@highlighted_video = Video.highlighted
end
end
class WelcomeController
然后,如果您在模型中定义了#url
方法,那么视图中的代码应该可以正常工作。如果您试图获取第一条记录,请尝试以下操作
@highlighted_video = Video.where("highlight = true").first
访问@highlighted\u video实例变量的属性时要小心,如果没有与您的查询匹配的记录,它将返回nil值,您将获得nil类的错误未定义方法url。我只是在查找单个视频,但我现在知道where返回数组。如果我使用FIND方法怎么办?您是否试图获取第一条突出显示值为true的记录?@user3099920很高兴听到!如果答案解决了你的问题,你也可以接受:)
@highlighted_video = Video.where("highlight = true").first