【发布时间】:2011-09-23 18:03:47
【问题描述】:
我还是 Rails 的新手,很难理解路径系统在 Rails 中的工作原理。
在我的 routes.rb 中,我为注册创建了一个别名:
match 'signup' => 'user#new'
resource :user, :controller => 'user'
操作在那里,去 /signup 显示正确的操作。到目前为止一切顺利。
现在,当我提交我的注册表单时,它像往常一样使用 POST 运行创建操作。这就是我卡住的地方。
如果注册失败,我想再次向用户展示注册表单。一种选择是进行“新”渲染,但这会将用户带到 /user 而不是 /signup。
用户控制器
class UserController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save
redirect_to root_url
else
render "new"
end
end
end
任何帮助表示赞赏!
更新 - 找到解决方案
为 /signup 添加了 2 个匹配路由,使用 :via 选项
match 'signup' => 'user#new', :as => :signup, :via => 'get'
match 'signup' => 'user#create', :as => :signup, :via => 'post'
这样,应用程序知道当发布到 /signup 时它应该运行 create 操作,而当 http 方法是 get 时,它会使用新操作。
控制器标记与上面发布的相同。
【问题讨论】: