2013-12-15 92 views
0

我对MongoDb和rails非常陌生,但我正在建立一个足球队信息站点。我拥有嵌入球队的联赛。这些团队嵌入了昵称。Mongo和Rails嵌套嵌入问题

所以我有一个的routes.rb,看起来像这样:

resources :leagues do 
    resources :teams do 
    resources :club_nicknames 
    end 
end 

在组展的网页我有一个表单添加一个新的绰号:

%h2 New Nickname 
    = form_for [@team, ClubNickname.new] do |f| 
    %p 
     = f.label :name 
     = f.text_field :name 
     %p= f.submit 

,但我得到这个错误

undefined method `team_club_nicknames_path' for #<#<Class:0x007fd58a001970>:0x007fd58a295718> 

从耙路我知道它应该瞄准league_team_club_nicknames_path但我无法得到它,我陷入了混乱。

回答

1

尝试使用@team的形式排列在相关联赛:

%h2 New Nickname 
    = form_for [@team.league, @team, ClubNickname.new] do |f| 
    %p 
     = f.label :name 
     = f.text_field :name 
     %p= f.submit 

(我假设你有你的Team模型belongs_to :league关系。)

+0

感谢你,让我过去上面的错误,但现在我得到一个 '未初始化的常数ClubNicknamesController错误'。 我有这在我的团队模型 'embeds_many:club_nicknames embedded_in:league' –

+1

形式需要的地方,一旦提交表单发送数据。默认情况下,Rails需要一个'ClubNicknamesController',但你可以在任何地方发布数据。可以在app/controllers目录下创建一个'club_nicknames_controller.rb'文件,或者在'form_for'标签中使用':url'选项来指定发送数据的位置。 – jvperrin

+0

我有一个'ClubNicknamesController'它有它。 'def create' '@league = League.find(params [:league_id])' '@team = @ league.teams.where('_ id'=> params [:team_id])' '@club_nickname = @ team.club_nicknames.create!(params [:club_nickname])''redirect_to @league,:notice =>“已创建评论!” ' 'end' –