2015-11-23 81 views
1

我有我的形式誰包含多個對象 當我去我的網頁上的「新」爲創造新的team_member一個問題,我有這樣的錯誤:Ruby on Rails的 - 嵌套表格 - 未知屬性

未知屬性'Team_member_id'爲TeamMembersGame。

模型/ team_member.rb

class TeamMember < ActiveRecord::Base 

    mount_uploader :avatar, AvatarUploader 

    has_many :team_members_games 
    accepts_nested_attributes_for :team_members_games 
    has_many :team_members_weapons 
    has_many :team_members_champions 
end 

模型/ team_member_game.rb

class TeamMembersGame < ActiveRecord::Base 
    belongs_to :team_member 
end 

控制器/管理/ team_members_controller.rb

class Admin::TeamMembersController < Admin::DashboardController 
    def new 
     @member = TeamMember.new 
     @member.team_members_games.build 
    end 

    def create 
     @member = TeamMember.new(member_params) 

     if @member.save 
      redirect_to edit_admin_team_member_path(@member.id), notice: 'Le membre a bien été creer' 
     else 
      render 'new' 
     end 
    end 

    def edit 
     @member = TeamMember.find(params[:id]) 

     @member_game = @member.team_members_games 
     #@member = TeamMember.joins(:TeamMembersChampion, :TeamMembersWeapon, :TeamMembersGame) 
    end 

    def update 
     @member = TeamMember.find(params[:id]) 

     if @member.update_attributes(member_params) 
      # Handle a successful update. 
      redirect_to edit_admin_team_member_path(@member.id), notice: 'Le membre a bien été modifier' 
     else 
      render 'edit' 
     end 
    end 

    def destroy 
     TeamMember.destroy(params[:id]) 
     redirect_to admin_team_members_path, notice: 'Le membre a bien ete supprimer' 
    end 

    private 

    def member_params 
     params.require(:team_member).permit(:name, :id_steam, :color, :avatar, :avatar_color, :description, :rank_cs, :rank_lol, :role_cs, :role_lol, team_members_games: [ :team_members_id, :name_game]) 
    end 

    def member_games 
     params.require(:team_members_games).permit(:team_members_id, :name_game) 
    end 
end 

視圖/管理/ new.html.erb

<%= form_for(@member, url: admin_team_members_path, html: { method: :post }, id: 'new_news') do |f| %> 
    <%= @member.inspect %> 
    <%= @member_games.inspect %> 
    <div class="row"> 
     <div class="col s12"> 
      <% @member.errors.full_messages.each do |msg| %> 
       <%= msg %> 
      <% end %> 
     </div> 
    </div> 

    <div class="row"> 
     <div class="col s12 m6"> 
      <div class="field input-field"> 
       <%= f.label :name, "Nom" %> 
       <%= f.text_field :name, autofocus: true, :class => "" %> 
      </div> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="col s12"> 
      <p class="bold"> 
       Jeux : 
      </p> 
     </div> 
     <div class="col s12 m6"> 

      <%= f.fields_for :team_members_games do |team_members_games_form| %> 
      <div class="field input-field"> 
       <%= team_members_games_form.check_box :name_game, {:class => "filled-in", :id => "team_members_game_name_game"}, true, false %> 
       <%= team_members_games_form.label :name_game, "game" %> 
      </div> 
      <% end %> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="col s12"> 
      <div class="btnlog actions"> 
       <%= button_tag(type: 'submit', class: "btn") do %> 
        Publier <i class='material-icons right'>send</i> 
       <% end %> 
      </div> 
     </div> 
    </div> 
<% end %> 

的感謝!

+0

在你'member_params'和'member_games',我想你想使用'team_member_id'而不是'team_members_id'。 – vee

+0

我不認爲這是因爲錯誤是在「新」,並不傳遞到member_parems或member_games – Cle61

回答

0

你在你的代碼允許team_members_id而不是team_member_id

重構代碼,以這樣的:

def member_params params.require(:team_member).permit(:name, :id_steam, :color, :avatar, :avatar_color, :description, :rank_cs, :rank_lol, :role_cs, :role_lol, team_members_games_attributes: [ :id, :team_member_id, :name_game]) end

+0

沒有錯誤,除了在我的功能編輯,但它是其他。當我看着我的BDD,沒有什麼是創建在我的表team_members_games – Cle61

0

更改允許的方法名稱和參數如下: -

def team_member_params 
    params.require(:team_member).permit(:name, :id_steam, :color, :avatar, :avatar_color, :description, :rank_cs, :rank_lol, :role_cs, :role_lol, team_members_games: [ :id, :name_game]) 
end 

並在創建團隊成員時使用此方法: -

def create 
    @member = TeamMember.new(team_member_params) 
    if @member.save 
     redirect_to edit_admin_team_member_path(@member.id), notice: 'Le membre a bien été creer' 
    else 
     render 'new' 
    end 
end 
+0

沒有錯誤,編輯除外,但它是其他。在我的bdd中,我的表_team_member_games_爲空 – Cle61

0

我已經corrige一些錯誤,但我沒有想法得到team_member的ID爲表team_member_games:

def team_member_params 
     params.require(:team_member).permit(:name, :id_steam, :color, :avatar, :avatar_color, :description, :rank_cs, :rank_lol, :role_cs, :role_lol, team_members_game_attributes: [ :id, :name_game]) 
end 

沒有一個元素都加在我的表team_members_games