Ruby on rails Rails形式多态关系

Ruby on rails Rails形式多态关系,ruby-on-rails,forms,formtastic,Ruby On Rails,Forms,Formtastic,Formtastic没有显示具有许多多态关系的相关表中的信息,这是我遇到的问题 有四种模式在起作用:NPC、玩家、能力和外部参照能力。但我现在只关心两个:玩家和外部参照能力 我反对交叉引用表的命名约定,因为外部参照功能与NPC和玩家都有关系。请参见以下外部参照功能和播放器的模型关系: 玩家 class Player < ActiveRecord::Base attr_accessor :characterable ... has_many :xref_abilities, :a

Formtastic没有显示具有许多多态关系的相关表中的信息,这是我遇到的问题

有四种模式在起作用:NPC、玩家、能力和外部参照能力。但我现在只关心两个:玩家和外部参照能力

我反对交叉引用表的命名约定,因为外部参照功能与NPC和玩家都有关系。请参见以下外部参照功能和播放器的模型关系:

玩家

class Player < ActiveRecord::Base
  attr_accessor :characterable
  ...
  has_many :xref_abilities, :as => :characterable
  #has_many :xref_abilities, :through => :characterable
  accepts_nested_attributes_for :xref_abilities
end
你可以看到我尝试了收集,结果返回了一个包含所有记录的下拉列表。。。不是我想要的。我也试着用.find_each而不是.all with conditions,这给了我一个无阻塞(屈服)错误


我知道这和多态关系有关,而且外部参照能力不是玩家独有的。它与玩家也没有直接关系。如果我知道怎么做,也许我能解决这个问题。我在gitHub上找不到任何东西,所以我非常感谢您的建议。

尝试一下这个经过修改的东西,它应该可以工作

<div class="show">
  <%= semantic_form_for @Player do |f| %>
    <h1><%= @Player .name %></h1>
    <%#= f.inputs %>
    <%#= f.inputs :characterable, :collection => XrefAbility.all %>
    <%= f.semantic_fields_for :characterables do |abil| %>
      <%= abil.inputs :ability_id %>
    <% end %>
  <% end %>
</div>

XrefAbility.all%>

and:for的语义字段可以互换使用。结果是一样的:null。
<div class="show">
  <%= semantic_form_for @Player do |f| %>
    <h1><%= @Player .name %></h1>
    <%= f.inputs %>
    <%#= f.input :characterable, :collection => XrefAbility.all %>
    <%= f.inputs :for => :characterables do |abil| %>
      <%= abil.input :ability_id %>
    <%  end %>
  <% end %>
</div>
<div class="show">
  <%= semantic_form_for @Player do |f| %>
    <h1><%= @Player .name %></h1>
    <%#= f.inputs %>
    <%#= f.inputs :characterable, :collection => XrefAbility.all %>
    <%= f.semantic_fields_for :characterables do |abil| %>
      <%= abil.inputs :ability_id %>
    <% end %>
  <% end %>
</div>