Project:Class的另一个未定义方法`model_name'

时间:2013-05-19 11:33:25

标签: ruby-on-rails-3 forms

我是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

我上面所做的是尝试“包装”播放列表对象,但它看起来不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

class String
    include BasePlaylist
end