2016-10-15 36 views
0

私は完全なRuby noobですので、私が5のように私に説明してください。私は7つのf.number_fieldsを持つフォームを持っています。私はそれらを追加してそれらに格納したいと思う:合計。ここで私が話しているかの例です:Rubyでは、f.number_fieldに複数のユーザー入力を追加するにはどうすればよいですか?

 <%= f.label :icecream %><br> 
     <%= f.number_field :icecream %> 

     <%= f.label :cake %><br> 
     <%= f.number_field :cake %> 

したがって、この場合には、私はからのユーザ入力を利用したいと思います:アイスクリームと:ケーキやそれらを追加し、それを保存:合計が、どのようだろう私がする?これはデータベースに保存されます。

+0

は、あなたが同じページに結果を見たいか、後に提出し、データベースに保存されますか? ..完全なフォームを追加してください。 – Zero

+0

はい、提出をクリックすると、データベースに合計で保存されます – Cactus

+0

それに関連するモデルとコントローラメソッドを追加してください。 – Zero

答えて

0

お使いのモデルとコントローラを見て、あなたのフォームがあります。何が起こるかは、合計の新しいビューにあるフォームに記入することです。送信ボタンを押すと、コントローラーの操作を要求しますcreatecreateアクションではtotal_paramsメソッドを呼び出すことになります。このメソッドはparamsハッシュ(ビュー内のすべての情報を含みます)をチェックして、:totalキーの値を持っていることを確認します:cake:icecreamを渡すことができます(これは強力なパラメータまたはホワイトリストのパラメータを呼び出します)。privateキーワードはコントローラの外部から直接total_paramsアクションにアクセスしないようにするためのものです。次にcreateメソッドでは、eachの外観は、total_paramsへの呼び出しによって返されたハッシュの値を繰り返し処理し、それを変数total_valueに追加します。各ループが終了したTotalレコードは、total列の値がicecreamcakeの合計であるデータベースに作成されます。これはおおよその値の格納方法です。

ビュー

#app/views/totals/new.html.erb 
    <%= form_for @total, url: {action: "create"} do |f| %> 
    <%= f.label :icecream %><br> 
    <%= f.number_field :icecream %> 

    <%= f.label :cake %><br> 
    <%= f.number_field :cake %> 
    <%= f.submit %> 

コントローラ

#app/controllers/totals_controller.rb 

    class TotalsController << ApplicationController 

    def create 
     total_value = 0 

     total_params.each do |k, v| 
     total_value += v 
     end 
     Total.create(total: total_value) 
    end 

    private 

    def total_params 
     params.require(:total).permit(:cake, :icecream) 
    end 
    end 

モデル

#app/models/total.rb 

class Total << ActiveRecord::Base 
end 
関連する問題