2015-11-23 2 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, nothink создается в моем столе 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 для таблицы 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

Смежные вопросы