无法在联接中创建条目 table
Unable to create entry in join table
我正在尝试将条目保存到连接 table,但没有成功。正如我配置的那样,Stockholder
has_many :entity_joins
(我试图让 Stockholder
由多个 people
组成,并允许 Person
参与多个 stockholders
。每个股东的每个加入条目都添加了茧,如下所示:
<h1>Stockholders#edit</h1>
<p>Find me in app/views/stockholders/edit.html.erb</p>
<%= simple_form_for [@stock, @stockholder], html: {id:"stockholderform"}, update: { success: "response", failure: "error"} do |f| %>
<div class="container">
<div class="symegrid">
<div class="form-inline">
<%= simple_fields_for :entity_joins do |ejoin| %>
<%= render 'entity_join_fields', f:ejoin %>
<% end %>
<div>
<%= link_to_add_association 'Add Owner', f, :entity_joins, class: "btn btn-default add-button" %>
</div>
entity_join_fields 仅包含一个字段,用于指示应通过 select 菜单将哪个人添加到 Stockholder
:
<%= f.grouped_collection_select :entity_id, [Org, Person], :all, :model_name, :to_global_id, lambda {|org_or_person_object| org_or_person_object.instance_of? Org? rescue org_or_person_object.fname + " " + org_or_person_object.lname rescue org_or_person_object.name}, label:"Stockholder", class: "names"%>
但是我去保存Stockholder
表格的时候,development.log里面的参数是这样的:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"JF6a/hVU49y1AAX4iAyi6t/Y/ti1S6CAotw28Qj8PGbESpl/puMUliqOz9iwUQ9vHwIeF5hFjykwSUTcKpzGrQ==", "entity_joins"=>{"entity_id"=>"gid://legal/Person/2"}, "stockholder"=>{"cert_number"=>"", "issue_date(2i)"=>"12", "issue_date(3i)"=>"2", "issue_date(1i)"=>"2015", "shares_issued"=>"", "shares_repurchased"=>"", "shares_canceled"=>"", "shares_outstanding"=>""}, "commit"=>"Update Stockholder", "stock_id"=>"1", "id"=>"2"}
最引人注目的是 entity_joins
位于 stockholder
参数之外,而不是嵌套在其中。显然,它没有保存到数据库中,也没有抛出任何错误。 entity_joins
的数据是正确的(它是 Person
的全局 ID,因此我可以将连接扩展为多态,但这是另一回事了)。有什么明显的原因可能导致此问题吗?
提前致谢。
您需要在表单生成器实例上调用 simple_fields_for
:
<%= f.simple_fields_for :entity_joins do |ejoin| %>
<%= render 'entity_join_fields', f:ejoin %>
<% end %>
否则它没有上下文,只会使用 name="entity_joins[something]"
而不是 stockholder[entity_joins][something]
创建输入。
我正在尝试将条目保存到连接 table,但没有成功。正如我配置的那样,Stockholder
has_many :entity_joins
(我试图让 Stockholder
由多个 people
组成,并允许 Person
参与多个 stockholders
。每个股东的每个加入条目都添加了茧,如下所示:
<h1>Stockholders#edit</h1>
<p>Find me in app/views/stockholders/edit.html.erb</p>
<%= simple_form_for [@stock, @stockholder], html: {id:"stockholderform"}, update: { success: "response", failure: "error"} do |f| %>
<div class="container">
<div class="symegrid">
<div class="form-inline">
<%= simple_fields_for :entity_joins do |ejoin| %>
<%= render 'entity_join_fields', f:ejoin %>
<% end %>
<div>
<%= link_to_add_association 'Add Owner', f, :entity_joins, class: "btn btn-default add-button" %>
</div>
entity_join_fields 仅包含一个字段,用于指示应通过 select 菜单将哪个人添加到 Stockholder
:
<%= f.grouped_collection_select :entity_id, [Org, Person], :all, :model_name, :to_global_id, lambda {|org_or_person_object| org_or_person_object.instance_of? Org? rescue org_or_person_object.fname + " " + org_or_person_object.lname rescue org_or_person_object.name}, label:"Stockholder", class: "names"%>
但是我去保存Stockholder
表格的时候,development.log里面的参数是这样的:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"JF6a/hVU49y1AAX4iAyi6t/Y/ti1S6CAotw28Qj8PGbESpl/puMUliqOz9iwUQ9vHwIeF5hFjykwSUTcKpzGrQ==", "entity_joins"=>{"entity_id"=>"gid://legal/Person/2"}, "stockholder"=>{"cert_number"=>"", "issue_date(2i)"=>"12", "issue_date(3i)"=>"2", "issue_date(1i)"=>"2015", "shares_issued"=>"", "shares_repurchased"=>"", "shares_canceled"=>"", "shares_outstanding"=>""}, "commit"=>"Update Stockholder", "stock_id"=>"1", "id"=>"2"}
最引人注目的是 entity_joins
位于 stockholder
参数之外,而不是嵌套在其中。显然,它没有保存到数据库中,也没有抛出任何错误。 entity_joins
的数据是正确的(它是 Person
的全局 ID,因此我可以将连接扩展为多态,但这是另一回事了)。有什么明显的原因可能导致此问题吗?
提前致谢。
您需要在表单生成器实例上调用 simple_fields_for
:
<%= f.simple_fields_for :entity_joins do |ejoin| %>
<%= render 'entity_join_fields', f:ejoin %>
<% end %>
否则它没有上下文,只会使用 name="entity_joins[something]"
而不是 stockholder[entity_joins][something]
创建输入。