【发布时间】:2016-02-25 22:41:01
【问题描述】:
我对包含多个对象的表单有疑问 当我在我的页面“新”上创建新的团队成员时,我有这个错误:
TeamMembersGame 的未知属性“team_member_id”。
models/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
models/team_member_game.rb
class TeamMembersGame < ActiveRecord::Base
belongs_to :team_member
end
controllers/admin/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
查看/admin/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 %>
谢谢!
【问题讨论】:
-
在您的
member_params和member_games中,我认为您想使用team_member_id而不是team_members_id。 -
我不认为这是因为错误在“新”中并且不传递到 member_parems 或 member_games
标签: ruby-on-rails ruby forms ruby-on-rails-4