在devise (rails)中,附加注册字段在提交失败后不会重新填充是因为devise默认情况下只会在用户成功注册时保存注册字段的内容,而在失败时不会保留用户填写的信息。
Devise是一个用于Ruby on Rails应用程序的身份验证解决方案。它提供了一套现成的控制器和视图,用于处理用户的注册、登录、注销和密码重置等功能。
要解决附加注册字段提交失败后不会重新填充的问题,可以通过以下步骤来实现:
attr_accessible
或attr_accessor
来声明附加的字段,并确保这些字段在数据库表中存在。text_field
或text_field_tag
来创建一个输入框。create
方法,在注册失败时重新填充用户填写的信息。可以使用super
调用父类的create
方法,并在失败的情况下,将错误信息和填写的信息传递给视图进行处理。以下是一个示例的自定义控制器代码:
class RegistrationsController < Devise::RegistrationsController
def create
super do |resource|
if resource.errors.any?
flash[:error] = resource.errors.full_messages.to_sentence
# 重新填充用户填写的信息
resource.phone = params[:user][:phone]
end
end
end
end
在上述示例中,如果注册失败,会将错误信息保存在flash中,并将填写的电话号码重新赋值给User模型的phone字段。
要启用自定义控制器,需要在路由文件中将默认的devise控制器指向自定义控制器:
devise_for :users, controllers: { registrations: "registrations" }
通过以上步骤,附加注册字段在提交失败后将会重新填充用户填写的信息,从而提供更好的用户体验。
参考链接:
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云