我正在尝试允许用户更改其设计用作其唯一用户名的电子邮件地址.即使更新没有出现错误,也不会对数据库中用户的电子邮件地址进行任何更改.
形成:@H_404_3@
<%= f.fields_for :user_account,@user.user_account do |user_account| %> <p>Edit email address for account: <%= @user.user_account.email %></p> <div class="field"> <%= user_account.label :new_email %><br /> <%= user_account.text_field :email,autocomplete: "off",value: nil %> </div> <div class="field"> <%= user_account.label :password %> <i>(please confirm the password associated with this account)</i><br /> <%= user_account.password_field :current_password,autocomplete: "off" %> </div> <%= hidden_field_tag 'form','email' %> <div class="actions"> <%= user_account.submit "Edit" %> </div>
控制器:@H_404_3@
def update respond_to do |format| if params[:form] == 'email' if @user.user_account.valid_password?(params[:user][:user_account_attributes][:current_password]) if @user.update(user_params) format.html { redirect_to user_path(@user),:notice => 'your new email has been saved' } format.json { render :show,status: :ok,location: @user } else format.html { render :edit } format.json { render json: @user.errors,status: :unprocessable_entity } end else format.html { redirect_to edit_email_path(@user),:notice => 'incorrect password (email)' } end else ...
def user_params params.require(:user).permit( :first_name,:middle_initial,:last_name,:linkedin,:website,:facebook,:video,:phone_number,:address_1,:address_2,:city,:zip_code,:image,:number,:years_practicing,:neighborhood,:biography,:price,:status,user_employments_attributes: [:id,:user_id,:company,:position,:start_date,:end_date,:info,:_destroy],user_educations_attributes: [:id,:school,:degree_title,user_account_attributes: [:id,:email,:password,:password_confirmation,user_category_ids:[]) end
class UserAccount < ActiveRecord::Base # Include default devise modules. Others available are: #,:lockable,:timeoutable and :omniauthable devise :database_authenticatable,:registerable,:confirmable,:recoverable,:rememberable,:trackable,:validatable belongs_to :user end