Ruby on rails 4 设计用户的嵌套表单

Ruby on rails 4 设计用户的嵌套表单,ruby-on-rails-4,devise,nested-forms,nested-attributes,Ruby On Rails 4,Devise,Nested Forms,Nested Attributes,我已经设计好并运行了,一切正常,我正在尝试接受用户模型的嵌套属性。我生成了一个名为degree的模型: rails g model Degree university:string course:string level:string user:references rake db:migrate 表单显示正确,但没有数据保存到数据库?在rails控制台中,我运行了: Degree.all 查看是否保存了任何数据,但我什么也没有得到 注册_controller.rb: class Users

我已经设计好并运行了,一切正常,我正在尝试
接受
用户
模型的嵌套属性。我生成了一个名为degree的模型:

rails g model Degree university:string course:string level:string user:references
rake db:migrate
表单显示正确,但没有数据保存到数据库?在rails控制台中,我运行了:

Degree.all
查看是否保存了任何数据,但我什么也没有得到

注册_controller.rb:

class Users::RegistrationsController < Devise::RegistrationsController

  before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation,
       :fname, :mname, :lname, :twitterLink, :githubLink, :stackoverflowLink, :dribbleLink, :mediumLink, degree_attributes: [:university, :course, :level]) }

    #devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:fname, :mname, :password, :current_password, :lname) }
  end

end
类用户::注册控制器<设计::注册控制器
在\u过滤器之前:配置\u允许的\u参数,如果::设计\u控制器?
受保护的
def配置\u允许的\u参数
为(:注册){许可证(:电子邮件,:密码,:密码确认,
:fname,:mname,:lname,:twitterLink,:githubLink,:stackoverflowLink,:dribbleLink,:mediumLink,学位属性:[:大学,:课程,:水平])
#为(:帐户更新){u许可证(:fname,:mname,:password,:current_password,:lname)}设计参数
结束
结束
模型

class Degree < ActiveRecord::Base
  belongs_to :user
end

----------------------------------

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  has_many :degrees
  accepts_nested_attributes_for :degrees
end
等级
嵌套属性所在的窗体:

<h2>Sign up</h2>
<% resource.degrees.build %>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= devise_error_messages! %>

  <div class="field">
    <%= f.label :email %><br />
    <%= f.email_field :email, autofocus: true %>
  </div>

  <div class="field">
    <%= f.label :password %>
    <% if @minimum_password_length %>
    <em>(<%= @minimum_password_length %> characters minimum)</em>
    <% end %><br />
    <%= f.password_field :password, autocomplete: "off" %>
  </div>

  <div class="field">
    <%= f.label :password_confirmation %><br />
    <%= f.password_field :password_confirmation, autocomplete: "off" %>
  </div>

  <div class="field">
    <%= f.fields_for :degree do |degree_fields| %>
        <%= degree_fields.label :university %>
        <%= degree_fields.text_field :university %><br>

        <%= degree_fields.label :course %>
        <%= degree_fields.text_field :course %><br>

        <%= degree_fields.label :level %>
        <%= degree_fields.text_field :level %><br>
      <% end %>


    </div>
<div class="actions">
    <%= f.submit "Sign up" %>
  </div>
<% end %>
注册

(最少字符)




度控制器.rb

class DegreeController < ApplicationController
  def new
    @user = User.new
    @user.degrees.build(degree_params)
  end

  def create
    @user.degrees.build(degree_params)
  end

  private

  def degree_params
    params.require(:degree).permit(:university, :degree, :level)
  end

end
class DegreeController