Ruby on 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

我是rails新手,我有一个带有视频模型、控制器和视图的应用程序

当我使用视频控制器时,我正在研究如何查询和显示我想要的视频

我有一个主页,在那里我想显示本周最重要的视频,所以我制作了一个带有索引操作的欢迎控制器,正如教程所说

在欢迎控制器内,我有:

    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