2011-12-04 10 views
0

Xのランダムなユーザ名とパスワードを作成する基本的なユーザ名/パスワードジェネレータを作成しました。私はthisポストを基準に使用しました。それはコンソールでうまく動作しますが、私はそれを自分のRoR3.1アプリケーションで正しく動作させる方法を理解していません。Rubyの反復をRails3のコントローラ/モデルに移動するには

私は、次の変数Iが入力でき、簡単なフォームを作成する必要があり

  1. 反復回数(X)は、パスワードのユーザ名の
  2. 長さ(Y)
  3. 長さ(Z)を必要とします

次に、保存をクリックすると、Xユーザー名とパスワードを作成してdbに保存するアプリケーションが必要になります。

私はページロード時にアクションを呼び出すことによって動作させることができましたが、変数を渡すフォームを作成する方法はわかりません。

私は私のユーザモデルでこれを作成しました:

def new_batch 
    @user = User.new 
    respond_to do |format| 
    if @user.save  
     @user = User.generate_batch 
    else 
     format.html { render action: "new_batch" } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
    end 
    end 
end 

そして、私のルートで:

get "/batch" => "users#new_batch" 

class User < ActiveRecord::Base 
    private 

    def self.generate_batch 
    10.times do 
    username = "" 
    password ="" 
    5.times { username << (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61))).chr } 
    5.times { password << (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61))).chr } 
    User.create!(:username => username, :check_attributes => [ {:attribute_name => "User-Password", :value => password, :op => ":="}]) 
    end 
    end  
end 

を私のユーザーのコントローラでは、私は、新しいアクションを作成しました

空白のフォームから始めて、少なくとも変数がハードコードされているかどうかを確認することができました:

= simple_form_for @user do |f| 
    = f.submit 

私はそれが私の代わりにバッチを生成するので、アクションを作成を使用しようとするように見える、提出ヒット...

私が行うには何が必要です:

  1. ゲット適切
  2. は事前

おかげで上記のような変数を入力し提出するためのフォーム

- UPDATE - 以下のアドバイスに従い

、私は2つのコントローラを作成しました:

routes.rbを今、これを持っている:

get "/batch" => 'users#new_batch' 
    put "/batch" => 'users#new_batch_create' 

そして、このようなコントローラ:

def new_batch 
    end 

    def new_batch_create 
    @user = User.generate_batch 
    end 

私が提出すると、ループを介して処理されます:

フォームから変数を渡す方法がまだ分かりません...

+0

を使用して独自のフォームを作成しますオフ。そのフォームの作成と処理のためにフォームの生成を分ける必要があります。 –

答えて

0

コントローラを2つ作成する必要があります。 1つはフォームを取得するために呼び出し、1つは投稿/アクションを取得します。 これは、通常のコントローラー、New/Edit、Create/Updateと同じです。

あなたがフィールドを作成するために使用されるビューの中でオブジェクトを持っている場合は、

= form_for(@user, :method => :put, :url => url_for({:controller => :users, :action => :new_batch)) do |f| 
    = f.submit 'Submit', {:class => 'btn'} 

以下のフォームを使用してそれ以外の場合は、ちょうどあなたのコントローラのロジックがある_tagヘルパー

= form_tag("/batch"", :method => :get) do |f| 
    = submit_tag 'Submit', {:class => 'btn'} 
+0

それは感謝します、ありがとう。どのように変数をループに送るのですか? S – simonmorley

+0

私のルートには何か問題があると思われます。あなたは一見することができますか?私の質問S – simonmorley

+0

を更新しました。それはわかりました。変数を渡すことについてまだよくわからないのですか? – simonmorley

関連する問題