0

我正在尝试修改create我的控制器的方法来自定义构建这个对象。

该场景是一个模式窗口显示一个表单,该表单具有一个自动完成文本字段,该字段通过 AJAX 在平台名称中加载,然后用户提交表单,该create方法在文本框中按名称查找Platform,并将其添加到current_user.game集合中。 ..

我有一个简单的has_many关系GamePlatform

1    def create
2        platform = Platform.where(:short_name => params[:platform])
3     
4        game = Game.new(game_params)
5        game.platform << platform
6        current_user.games << game
7        render :nothing
8    end

undefined method '<<' for nil:NilClass在第 5 行遇到错误。

我不知道这是否应该这样做......我应该如何尝试做到这一点?

4

2 回答 2

1

你错过了一个s

game.platforms << platform
#------------^-------------
于 2013-10-12T05:51:20.837 回答
0

所以我的模型中的关联错误(忘记添加它),而且我的表中有一个类型的platform列,而不是“整数”类型的列。stringGameplatform_id

更新后,我开始收到ActiveRecordTypeMismatch它期望类型Platform但发现的错误ActiveRecord::Record::Association(或类似的东西)。

显然,当分配给belongs_to关联方时,使用=而不是<<.

以下是更新的工作控制器create方法

game = Game.new(game_params)
game.platform = Platform.where(:short_name => params[:platform]).first
current_user.game << game
render :nothing
于 2013-10-12T15:16:01.657 回答