2011-08-06 7 views
0

私はRailsを使い慣れていないので、サンプルアプリケーションを構築していますので、それとRESTfulなパラダイムの周りに頭を上げることができます。Rails 3のフォーム検証でカスタムルートを保存する

私はユーザー登録ページを/ users/newの代わりに/ signupにルーティングしています。フォームの検証が失敗すると、「新規ユーザー」ページがレンダリングされますが、URLはユーザー作成パス/ usersに変更されます。

これは、Rails 3(The solutionsI've foundはRails 2のルーティングシステムをベースにしているように見えます)と、すでに/ usersをオーバーライドしていると考えられるため、 /新しい何かになるために新しい。

結局のところ、これは学習の練習であるはずです。私はそれが私が物事をどうやってやろうとしているかを理解するように働くことにそれほど気をつけません。

ここ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 

エンド

答えて

1

はいくつかのポインタです。

  • チェック出力o Fルートが
  • を作成されているかを確認するにはrake routesは、HTML生成を参照し、フォームはあなたがルートのサインアップを定義したが、ことがわかりますが、RESTfulなルートはまだ作成されます

を掲示されたURLは何で、あなたのフォームは "/ signup"ではなく "/ users"に投稿されます。

、あなたは「GET /ユーザー/新」と「POST /ユーザー」、したくないルートを生成していないまず最初に行うには、あなたが行うことができます

ことに、あなたのルートを変更することによって:

resources :users, :except => [:new, :create] 
get "/signup" => "users#new", :as => :signup # :as option creates a named route for you 
post "/signup" => "users#create" 

これで、フォームをレンダリングするときに、使用できない名前付きルートに関するエラーが表示される場合があります。そこから進み、問題を解決しようとします。あなたが再び立ち往生した場合は、詳細をポストバックしてください。

関連する問題