首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AssociationTypeMismatch for collection_check_boxes

AssociationTypeMismatch for collection_check_boxes
EN

Stack Overflow用户
提问于 2013-07-03 21:05:11
回答 1查看 601关注 0票数 0

控制器

代码语言:javascript
运行
复制
class PlayerProfilesController < InheritedResources::Base

    def show
        @player_profile = PlayerProfile.find(params[:id])
    end
end

模型

代码语言:javascript
运行
复制
class PlayerProfile < ActiveRecord::Base

  has_many :playing_roles, :dependent => :destroy
  has_many :player_roles, through: :playing_roles

end

class PlayerRole < ActiveRecord::Base

   has_many :playing_roles, :dependent => :destroy 
   has_many :player_profiles, through: :playing_roles

end

class PlayingRole < ActiveRecord::Base
  belongs_to :player_profile
  belongs_to :player_role

end

show.html.erb

代码语言:javascript
运行
复制
<%=collection_check_boxes(:player_profile, :playing_roles, PlayerRole.all, :id, :name)%>

盒子 (博士)

为两个复选框生成的HTML

代码语言:javascript
运行
复制
<input id="player_profile_playing_roles_1" name="player_profile[playing_roles][]" type="checkbox" value="1" class="hidden-field">
<span class="custom checkbox checked"></span>
<label for="player_profile_playing_roles_1">Striker</label>

<input id="player_profile_playing_roles_2" name="player_profile[playing_roles][]" type="checkbox" value="2" class="hidden-field">
<span class="custom checkbox"></span>
<label for="player_profile_playing_roles_2">Midfielder</label>
<input name="player_profile[playing_roles][]" type="hidden" value="">

它似乎显示的都是正确的,但是当我单击submit按钮时,我得到了以下错误:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-09 15:36:50

抱歉,我以为这很复杂,但我不这么认为。

您正在告诉collection_check_boxes期待:playing_roles,但随后通过PlayerRole.all将其传递为PlayerRoles的集合。这就是错配。AssociationTypeMismatch是指当你让一个物体联想一只鸭子,然后把它递给一架直升机。

你需要这样做:

代码语言:javascript
运行
复制
<%= collection_check_boxes(:player_profile, :player_role_ids, PlayerRole.all, :id, :name) %>

让它期待:player_role_ids,就可以传递给它一个PlayerRole.all的集合,其中包含值方法:id和text方法:name

然后,在更新中,它会将这些in保存到Player上的player_role_ids属性中,从而生成关联。

另见:带多个选择

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17458098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档