Ruby on Rails - 使用Multiselect进行保存

时间:2015-01-21 18:49:12

标签: ruby-on-rails select

我正在尝试通过编写一个简单的程序来学习RoR,但是我很难从多选中保存表单数据。有人可以帮我理解Rails中的多选项。我有一个表格,有多种不同的棋盘游戏。我想将选定的游戏ID保存为表格“2,3”。但是,目前它将其保存为:game_id:“[\”\“,\”2 \“,\”3 \“]”

我在保存到数据库之前尝试使用连接:

self.game_id = game_id.join(', ')

但是得到以下错误:NoMethodError(未定义的方法`join'代表“[\”\“,\”3 \“,\”4 \“]”:String):

我将params设置为:

def setup_params
  params.require(:user).permit(:game_id => [])
end 

和视图:

  <%= f.label :game_id, "Board Games" %>
  <%= f.select(:game_id, @game.map {|g| [g.game_name, g.id]}, {}, {:multiple => true}) %> 

从错误中,它似乎以字符串形式返回?另外,我不确定它为什么在数组中有初始空白。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我认为你要从数组中删除空白值。

self.game_id = game_id.reject(&:empty?).map { |t| t }.join(", ")

这可能会对你有所帮助!