2011-12-07 14 views
0

インデックスページがユーザーに電子メールを指示するフォームである小さなアプリケーションを持っています。私はroot_pathが 'new私のフォームをレンダリングするアクション:Rails 3 '新しい'アクションは、フォームのためのインデックスページとして

Oa::Application.routes.draw do 
    resources :signups 
    match "/confirm", :to => "pages#confirm" 
    root :to => 'signups#new' 
end 

正常に動作しているフォームを送信すると、これは正常に動作しています。私はルートページに提出し、私はアドレスバーにURL localhost:3000/signupsを持っていて、私も正しいですが、私は手動でhttp://localhost:3000/signupsを訪問していた場合、アクション 'index'がSignupsControllerに見つかりませんでした。 http://localhost:3000/signupsに直接アクセスすると、「index_action」アクションを作成し、root_pathにredirect_toを発行して「SignupsControllerにアクションのインデックスが見つかりませんでした」というメッセージが表示されないようにしても問題ありませんか?これを行うには適切な方法ですか?

class SignupsController < ApplicationController 
    def index 
    redirect_to root_path 
    end 

    def new 
    @signup = Signup.new 
    end 

    def create 
@signup = Signup.new(params[:signup]) 
if @signup.save 
     UserMailer.registration_confirmation(@signup).deliver 
    flash[:notice] = "Signup created successfully." 
    redirect_to confirm_path 
else 
    render :action => "new" 
    end 
    end 
end 

ありがとうございます!

J

答えて

1

はこのような何か:resources :signups

+0

Delba、それは私に[GET] "/"と一致するルートがありません。また、なぜリソースを使用しないのですか?後で他のアクションを追加する予定です。 – JeffC

+0

本当ですか?あるいは、 'root:to => 'signups#new''を入力します。私はこのケースでリソースを使用すべきでない理由で私の答えを更新しようとしています。 – Damien

+0

ああ、それはうまくいきます、root:to => 'signups#new'だから、なぜ私はリソースを使用すべきではないのですか? – JeffC

1

http://localhost:3000/signupsは私にエラーを与える "アクション 'インデックス' はSignupsController見つかりませんでした" という理由を使用しないでください

post '/' => 'signups#create' 
root to: 'signups#new' 

を理由は次のとおりです。

最初に「一致した」ルートが使用されます。
このだから、すべて:すべてのルートを作成し、サインアップ

- インデックス、ショー、作成、:ITは

リソースによって取り扱われますので

match "/confirm", :to => "pages#confirm" 
root :to => 'signups#new' 

は、/サインアップのURLによって無視されます新規作成、編集、更新、破棄

「signups」が使用されている場合、それはサインアップインデックスアクションを意味します。

レール上でそれを取り外したり、RESTful routesを読んでそれを適用してみてください。

+0

はい、意味があります。 – JeffC

+0

は役に立ちましたか?もしそうならアップヴォートにしたいかもしれません:) –

+0

はい、ありがとう、upvoteに忘れてしまった:) – JeffC

関連する問題