2011-07-27 11 views
0

私はRailsを初めて使っていて、今は小さなプロジェクトをRailsに書き込もうとしています。このプロジェクトの一環として、データ(パスワード)のフォームを処理したいと考えています。入力されたパスワードが正しい場合私のフォームは、私は別のhtmlページを表示するRuby on Railsでのフォームデータ処理

<form name="input" action="http://0.0.0.0:3000/submit/" method="get"> 

Password: <input type="text" name="password" /> 

<input type="submit" value="Login" /> 

で、元のパスワードは、データベースに格納されていない、単なる文字列と比較することを意味します。私はコントローラを作成し、 'rails generate controller project'を使用してビューを作成しました。パスワード一致のコードは、 'app/controllers'ディレクトリの 'project_controller.rb'ファイルに書き込まれるべきだと思います。しかし、どのようにパスワードマッチのためのコードを記述し、 'routes.rb'ファイルにURLをマップするのですか? 'get'メソッドが 'post'に変更された場合、必要な変更は何ですか?ルーティングの基本的な例は、私は私のproject_controller.rbする3機能を持ってここに

Foo::Application.routes.draw do 
    get '/form' => 'project#form' 
    get '/submit' => 'project#submit' 
    get '/logedin' => 'project#logedin' 
end 

のようなものです

答えて

4

すべてのroutes.rbを第一には、コントローラ

に機能するためのURLをマップするためのファイルです機能 にマッピングしますが、ここで

はproject_controller.rbのサンプルコードである「ポスト」に「取得」変更することにより、投稿するように変更することができます

class ProjectController < ApplicationController 
def form 
    #will render view/project/form.html.erb 
end 

def submit 
    if params[:password] == 'secret' 
     redirect_to '/logedin' 
    else 
     #you can redirect to form again 
     #or render the form again 
     render 'form' #render the view/project/form.html.erb 
    end 
end 

def logedin 
    render :text => 'you are loged in' 
end 

エンド

フォーム機能は、単に/ form.html.erb

がメインロジックで提出するアプリ/ビュー/プロジェクト内にあるデフォルトのビューをレンダリングします。あなたはフォームデータにアクセスすることができますパラメータ

コードはまっすぐです。あなたはレールガイドの詳細を学ぶことができますhttp://guides.rubyonrails.org/

+0

私はそのフォームを指定してルートに提出するのは良い習慣とは思っていません。むしろ、同じ名前のコントローラとビューでメソッド名を指定し、リダイレクトコントローラから通知を表示 –

+0

ありがとうございました。あなたのコードは正確で完全に機能しています。それは私をたくさん助けました。もう一度ありがとうございます。 –

+0

はい、これはベストプラクティスではありません。ヘルパーを使用してフォームを使用し、できるだけリソースルートを使用する必要があります。この例では、要求を処理してその要求を関数にルーティングするレール機構を示しています。 – ahmy