2016-07-22 10 views
0

私はcollection_selectを使ってドロップダウンからオプションを選択しています。フォームを送信すると、複数のパラメータをparamsハッシュに送信します。この場合、 'team_id'と 'team_name'。 team_idはparamsハッシュに表示されています。 'team_name'は、ドロップダウンリスト自体に表示される値です。rails 4、collection_select、複数の属性をフォーム送信時にparamsハッシュに渡しますか?

view.html.erb

<%= form_for @carpool do |f| %> 
    <h3>Select Team</h3> 
    <div class="form-group"> 
     <%= f.collection_select :team_id, @ts_teams ? @ts_teams : [], :id, :name, include_blank: true %> 
    </div> 
     <%= f.submit 'Create Carpool', :class => 'button left' %> 
    <% end %> 

{"utf8"=>"✓", "authenticity_token"=>"bdazhLNLZ0QunrpJT7Gu63ipX76WME+ENSxL/B0XGeFL/GP5nishozmQENe22aelfcnnhnPBr4B35MeRL+kJLQ==", "carpool"=>{"team_id"=>"1923565"}, "commit"=>"Create Carpool", "controller"=>"carpools", "action"=>"create"} 

ハッシュparamsがどのように私はparamsハッシュにTEAM_NAMEを渡すことができますか?

+0

あなたはあなたのコントローラメソッドでteam_name' 'をどうしたいですか?あなたがparamsハッシュからそれを取得したい理由はありますか? – MarsAtomic

+0

Yup - カープールオブジェクトを作成したい - 私はcarpoolオブジェクトの 'name'プロパティをteam ... team_nameの名前に設定したいと思います。おそらく、これを行う簡単な方法があります... – matthewalexander

答えて

0

チームのインスタンスを作成して(おそらくすでに行っている)、名前を直接取得するだけで、フレーミングフープを飛び越えずに、必要なものを手に入れることができます。お使いのコントローラメソッドで

@team = Team.find(params[:team_id]) 
@team_name = @team.name 
+0

良い提案、私がフライフープを飛び回っている理由は、チームモデルを全く作成する必要がないからです。私は以前これをやっていたし、それはもちろん働いた。しかし、私に必要なのはチームの名前なので、基本的に無意味な追加のデータベースクエリを作成する必要がありました。 – matthewalexander

+0

私が書いたものは、 "The Rails Way"です。小さなdbトランザクションを回避しようとすると、多少なりとも時期尚早の最適化になります。私が考えることのできる唯一の選択肢には、javascriptで隠されたフィールドの過酷な操作やURLのパラメータを渡すことが含まれます。しかし、私は専門家からは遠いので、他の人が 'text_method'をselectからparamsハッシュに変える魔法の方法を知っているかもしれません。 – MarsAtomic