0

我是 Rails 的新手,我想做的是为 Youtube 创建一个简单的客户端。我正在使用 Youtube_it gem 来检索我的一个播放列表中的所有视频,并且我正在使用代码:

控制器:

class PlaylistsController < ApplicationController

  def show
    client = session[:client]
    @playlist = client.playlist(params[:id])
    @playlist.extend(BasePlaylist)
  end

end

为 Youtube_it/Playlist.class 扩展的模块:

module BasePlaylist
  extend ActiveModel::Naming
  include ActiveModel::Conversion

  def model_name
    'Playlist'
  end

  def persisted?
    false
  end
end

播放列表/show.html.erb:

<h1><%= @playlist.title %></h1>

<%= render 'form' %>

播放列表/_form.html.erb:

<%= form_for(@playlist) do |f| %>

    <% @playlist.videos.each do |video| %>
        <div class="field">
          <%= f.check_box_tag video.title %>
          <%= f.label video.title %>
        </div>
    <% end %>

    <div class="actions">
      <%= f.submit %>
    </div>
<% end %>

我得到的是:

undefined method `model_name' for YouTubeIt::Model::Playlist:Class

我上面所做的是试图“包装”播放列表对象,但它看起来不起作用。任何想法?

4

1 回答 1

0

虽然您已经定义了一个添加所需方法的模块,但您问题中的代码都没有显示该模块是如何添加到 Playlist 类中的。我不熟悉 YouTubeIt gem,所以我不能确定你会怎么做,但是如果你想将该模块添加到内置字符串类中,你可以这样做:

class String
    include BasePlaylist
end
于 2013-05-19T13:17:52.513 回答