【发布时间】:2015-07-02 23:04:04
【问题描述】:
我很清楚使用Simple Form 将数据属性分配给传统选择框中的选项,但是当涉及到分组选项时,我似乎遇到了一些问题。我找到了一个post,它解释了如何在没有简单形式的情况下做到这一点:
<%= f.select :game_id, grouped_options_for_select(@consoles.map{ |console| [console.name, console.games.map{ |g| [g.title, g.id, {'data-game'=> g.title.downcase.gsub(/\s+/, "-")}] } ] }, selected_key = f.object.game_id) %>
当我尝试将其翻译成适当的语法时,我收到此错误:
undefined method 'games' for ["PS3", []]:Array
<%= f.input :game_id, as: :grouped_select, collection: @consoles.map{ |console| [console.name, console.games.map{ |g| [g.title, g.id, {'data-game'=> g.title.downcase.gsub(/\s+/, "-")}] } ] }, group_method: :games, include_blank: "Select a game", input_html: {class: "boost__game"} %>
模型
class Game < ActiveRecord::Base
# attributes: title
has_and_belongs_to_many :consoles
end
class Console < ActiveRecord::Base
# attributes: name
has_and_belongs_to_many :games
end
似乎是什么问题?
【问题讨论】:
-
控制台是一个数组吗?
-
它是一个与
Game模型有has_and_belongs_to_many关系的模型。 -
我认为错误出在其他地方...
-
您确定因为使用
f.select方法可以正常工作吗?
标签: ruby-on-rails forms html-select simple-form custom-data-attribute