gpt4 book ai didi

ruby-on-rails - Rails - 表单错误后重定向

转载 作者:行者123 更新时间:2023-12-02 05:08:45 26 4
gpt4 key购买 nike

我是 Rails 的新手,所以请原谅我的知识有限。

我有一个名为用户的 Controller 。它有两个方法:newcreate

users#new 被调用时,会显示一个表单以在我的网站上注册一个帐户。我已经为此设置了一个路由,它使 URL/signup 像这样:

match "signup" => "users#new", :as => "signup"

当用户导航到/signup 时,我创建一个新的 user 实例变量并向他们显示表单,如下所示:

用户 Controller

def new
@user = User.new
end

新 View

<%= form_for @user do |f| %>
<!-- Form code here... -->
<!-- Then at the end: -->
<%= f.submit :value => 'Sign Up' %>
<% end %>

当用户提交此表单时,它会将数据发送到 users#create

我在 UsersController 中为 users#create 编写的代码如下所示:

def create
@user = User.new(params[:user])
if @user.save
redirect_to root_url, :notice => 'Signed Up!'
else
render "new"
end
end

if/else 语句用于检查 rails 是否能够创建我的新用户。如果是,它会毫无问题地重定向到索引。

如果它无法创建用户,它会呈现我的新 View ,并正常显示错误。

但是,它随后提供给我们的 URL 是/users,因为当它提交表单时,它会提交给/users。如果注册失败,我怎样才能得到它,它会重定向到/signup,并仍然显示发生的错误?

更新:routes.rb

Flightdb::Application.routes.draw do
get "users/new"
get "home/about"
get "home/index"
root :to => 'home#index'
match 'about' => 'home#about'
match "signup" => "users#new", :as => "signup"
resources :users
end

最佳答案

嗯,您不想听到的答案是通常不会这样做。无论哪种方式,URL 的语义都不理想。/new 意味着一个全新的新表单......但是有错误的表单有点像“部分创建”的用户。在任何一种情况下,用户都不需要使用 URL,因此不会丢失任何功能。

此外,考虑将注册和身份验证操作放在“帐户”(单个)资源上。 “用户” Controller /资源应该只用于后端管理界面。如果每个用户都有公共(public)配置文件,请将它们放在“配置文件”资源中。将用户的仪表板放在“仪表板” Controller (不是资源)上。

关于ruby-on-rails - Rails - 表单错误后重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8159045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com