1

我没有得到这个基本的实现。

楷模

class Player < ActiveRecord::Base  
  has_one :listing
end

class Listing < ActiveRecord::Base      
  belongs_to :player
end

播放器控制器

  def show
    @player = Player.find(params[:id])
    @listing = @player.listing.new
  end

路线

  resources :listings
  devise_for :players

  match "players/:id" => "players#show"

错误

undefined method `new' for nil:NilClass

我不明白为什么我不从我的播放器显示页面创建一个新列表。我认为我的路线可能需要嵌套,但这并不能解释错误。

我已经这样做了两年,当我阅读指南时,我觉得我完全理解了,但是当我开始自己做时,我误解了渲染这个简单视图的最基本实现。我心烦意乱。我错过了什么?

4

1 回答 1

1

问题是@player.listing尚未设置。如果您要在has_one关系上创建新项目,您将需要使用@player.build_listing. http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_one

于 2013-05-14T05:41:25.597 回答