我创建了新的 Rails 项目,仅使用生成的主页控制器来测试它。
我的设计型号是User
,所以注册页面是http://localhost:3000/users/sign_up
.
如果我触发错误,例如,在未提供密码的情况下提交表单,我会被重定向到http://localhost:3000/users
.
我怎样才能继续下去http://localhost:3000/users/sign_up
犯错误后?
I read 这个问题 and 唯一的答案建议使用redirect_to :back
在控制器中。
问题是我没有覆盖控制器。如果覆盖是解决问题的唯一方法,请解释它应该如何。
这是我的routes.rb
Rails.application.routes.draw do
root to: "home#index"
get 'home/index'
devise_for :users
end
Here是源代码Devise::RegistrationsController
。我应该如何覆盖new
or create
达到我需要的目的?
我强烈建议您不要这样做。 Rails 应用程序的默认行为(遵循路由命名约定)就是您所描述的方式。但是,如果您确实需要这样做,请按以下方法操作。
首先,转到您的routes.rb
and:
devise_scope :user do
post 'users/sign_up', to: 'devise/registrations#create'
end
EDIT
然后,生成设计视图,以便您可以覆盖表单的默认行为。
rails g devise:views
然后,打开你的app/views/devise/registrations/new.html
文件并编辑form_for
线所以它看起来像这样:
<%= form_for(resource, as: resource_name, url: users_sign_up_path) do |f| %>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)