Rails4 - 渲染错误并在表单中重新加载嵌套模型

时间:2015-05-04 07:03:36

标签: ruby-on-rails forms ruby-on-rails-4

我的用户具有从嵌套模型文档附加的头像(使用回形针)。

在我的注册#edit动作中,我有:

#registrations#edit
@user.avatar ||= @user.build_avatar

标准表单包括输入文件字段以及其他:name:email字段。

在我的注册#update action中,我有:

# registrations#update
if @user.update_attributes(account_update_params)
  set_flash_message :notice, :updated
  # Sign in the user bypassing validation in case his password changed
  sign_in @user, bypass: true
  redirect_to after_update_path_for(@user)
else
respond_to do |format|
  format.js
  format.html { render :edit }
  format.json { render json: @user.errors, status: :unprocessable_entity }
end

当我尝试编辑用户并且表单字段的验证失败时,注册#edit view我呈现,正确打印错误消息,但嵌套数据@ user.avatar未在view =>中重新加载没有文件输入。

我想这是因为我只构建并且没有保存/创建@ user.avatar。 我试图使用重定向,但然后我丢失了我的错误消息......

以下是我的注册#update action:

def update
    if @user.update(user_params)
      respond_to do |format|
        format.html { redirect_to user_path(current_user), notice: "ok" }
        format.json { render :edit, status: :ok, location: user_path(current_user) }
      end
    else
      # rebuild of the nested resource avatar
      @user.avatar ||= @user.build_avatar
      respond_to do |format|
        format.html { render :edit }
        format.json { render json: @partner.errors, status: :unprocessable_entity }
      end
    end
  end

处理此问题的最有效/最有效的方法是什么?

感谢您的帮助

0 个答案:

没有答案