【发布时间】:2012-04-05 01:58:21
【问题描述】:
我在尝试更新嵌入式表单时收到 ActiveSupport::HashWithIndifferentAccess 错误。
这是最简单的例子:
表格:
<h1>PlayersToTeams#edit</h1>
<%= form_for @players_to_teams do |field| %>
<%= field.fields_for @players_to_teams.player do |f| %>
<%= f.label :IsActive %>
<%= f.text_field :IsActive %>
<% end %>
<%= field.label :BT %>
<%= field.text_field :BT %>
<br/>
<%= field.submit "Save", class: 'btn btn-primary' %>
<% end %>
型号:
class PlayersToTeam < ActiveRecord::Base
belongs_to :player
belongs_to :team
accepts_nested_attributes_for :player
end
class Player < ActiveRecord::Base
has_many :players_to_teams
has_many :teams, through: :players_to_teams
end
控制器:
class PlayersToTeamsController < ApplicationController
def edit
@players_to_teams=PlayersToTeam.find(params[:id])
end
def update
@players_to_teams=PlayersToTeam.find(params[:id])
respond_to do |format|
if @players_to_teams.update_attributes(params[:players_to_team])
format.html { redirect_to @players_to_teams, notice: 'Player_to_Team was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @players_to_teams.errors, status: :unprocessable_entity }
end
end
end
end
这是提交表单时的params[:players_to_team] 对象:
ActiveSupport::HashWithIndifferentAccess 错误是什么意思?我需要做什么才能让此表单更新 players_to_team 条目?
编辑
BT 是players_to_teams 中的一列。如果我删除field_for 块,我可以成功保存BT 字段/players_to_teams 行。
谢谢
【问题讨论】:
-
什么是属性“BT”——这是表格 player_to_teams 上字段的正确名称吗?
-
是的。已更新问题以提供更多信息。
-
你能把“
-
这就是我最终做的事情并且它有效。你知道这是为什么吗?我在这里发布了它:stackoverflow.com/questions/10021980/…
-
因为你创建了一个几乎相同的问题,你应该删除这个
标签: ruby-on-rails forms activesupport