我是Rails的新手,我正在构建一个示例应用程序,因此我可以了解它和RESTful范例。
我有一个用户注册页面,路由到/ signup而不是/ users / new。如果表单上的验证失败,则会呈现“新用户”页面,但会将URL更改为创建用户路径/ users。
我很难解决如何以适合Rails 3的方式解决这个问题(The solutions I've found似乎基于Rails 2的路由系统)以及尽可能考虑RESTful我已经覆盖/ users / new成为别的东西。
毕竟,这应该是一次学习练习;我不太关心如何让它理解我应该做什么。这是routes.rb:
match '/signup', :to => 'users#create', :via => :post #first attempt at solving this
resources :users
match '/signup', :to => 'users#new'
#... routes to other controllers
这是我的控制器,处理:创建动作:
def create
@user = User.new(params[:user])
if @user.save
flash[:success] = "Welcome to Blather, the hottest new social network until about two weeks from now or TechCrunch gets bored!"
redirect_to @user
else
@title = "Sign Up"
render 'new'
end
端
答案 0 :(得分:1)
如果您正在学习,请参阅以下几点:
rake routes
的输出以查看正在创建的路线您会注意到虽然您已定义路线注册,但仍然会创建RESTful路线并且您的表单会发布到“/ users”而不是“/ signup”。
要做的第一件事是,不要生成您不想要的路线,“GET / users / new”和“POST / users”,您可以通过将路线更改为:
resources :users, :except => [:new, :create]
get "/signup" => "users#new", :as => :signup # :as option creates a named route for you
post "/signup" => "users#create"
现在,当您呈现表单时,您可能会遇到一些关于某些命名路由不可用的错误,或者您可能没有。继续从那里尝试解决问题。如果你再次陷入困境,请回复更多细节。