我正在尝试构建一个嵌套表单,该表单将创建一个新用户并订阅他们的计划。
当我点击“注册”时,我收到以下错误:
Validation failed: Plan subscriptions user can't be blank
我已经对下面的所有内容进行了两次和三次检查,并且我不确定此时出了什么问题。知道为什么订阅没有与新用户记录相关联吗?
这是我的代码:
User.rb
class User < ActiveRecord::Base
attr_accessible ..., :plan_subscriptions_attributes
has_many :plan_subscriptions, dependent: :destroy
accepts_nested_attributes_for :plan_subscriptions
PlanSubscriptions.rb
class PlanSubscription < ActiveRecord::Base
belongs_to :user
Plan_Subscriptions#新
def new
@plan = Plan.find(params[:plan_id])
@user = User.new
@user.plan_subscriptions.build
end
Plan_Subscriptions / New.html
<%= form_for @user do |f| %>
<fieldset>
<%= f.text_field :first_name, :label => false, :placeholder => 'First Name', :required => false %>
<%= f.text_field :last_name, :label => false, :placeholder => 'Last Name',
<%= f.fields_for :plan_subscriptions do |builder| %>
<%= builder.hidden_field :plan_id, :value => @plan.id %>
<% end %>
<%= f.submit 'Enroll', :error => false %>
</fieldset>
<% end %>
答案 0 :(得分:0)
计划执行时此时不会有id
因此我不会使用它。尝试删除该行:
<%= builder.hidden_field :plan_id, :value => @plan.id %>
@ plan.id将为nil
,因此它将覆盖自动构建的对象,从而无法通过验证。
然后尝试再次提交表单。如果您希望用户在订阅中设置某些内容,请尝试为计划订阅添加有效的表单元素。