0

I have the following code (in Slim format), which displays a form for users. The user's data displays and updates on submit. However, phone which is a nested attribute from publisher displays current data when I load the form, but wont update on submit.

View

= form_for current_user, url: user_registration_path, html: {class: 'account'} do |user_form|
  .row
    .control-group.text-center
      label.col-9 Email
      = user_form.text_field :email, class: 'col-7'

  = fields_for :publisher, current_user.publisher do |publisher_form|
    .row
      .control-group.text-center
        label.col-9 Phone
        = publisher_form.text_field :phone, class: 'col-7'

Registrations Controller

class RegistrationsController < Devise::RegistrationsController

  def update_resource(resource, params)
    resource.update_without_password(params)
  end

end

Application Controller

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:account_update) {|u| u.permit(
        :first_name,
        :last_name,
        :email,
        :password,
        :password_confirmation,
        :current_password,
        publisher_attributes: [:phone, :payment_details],
        banner_attributes: [:website, :banner_msg, :signup_msg, :bg_col, :txt_col, :btn_col]
      )}
  end
end

User Model

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

  accepts_nested_attributes_for :publisher

  validates_presence_of :first_name, :last_name
  validates_length_of :first_name, maximum: 100
  validates_length_of :last_name, maximum: 100

end

1 Answer 1

1

I finally discovered that

= fields_for :publisher, current_user.publisher do |publisher_form|

should be:

= user_form.fields_for :publisher, current_user.publisher do |publisher_form|
Sign up to request clarification or add additional context in comments.

1 Comment

Make sure to accept your answer. It's certainly the right answer, and it'll give you a fancy new badge! :D

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.