2016-07-22 30 views
0

我正在使用collection_select從下拉列表中選擇一個選項。當我提交表單時,我想發送多個參數到params散列表中。在這種情況下,'team_id'和'team_name'。 team_id在params散列中顯示得很好。 'team_name'是顯示在下拉列表中的值。rails 4,collection_select,將多個屬性傳入表單提交的參數哈希值?

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 %> 

PARAMS哈希

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

如何傳遞到TEAM_NAME params哈希表?

+0

你想在你的控制器方法用'team_name'做什麼?是否有你想從params散列中得到它的原因? – MarsAtomic

+0

是的 - 我想創建一個拼車對象 - 我想將拼車對象的'name'屬性設置爲團隊的名稱... team_name。也許有一個更簡單的方法來做到這一點... – matthewalexander

回答

0

只需創建團隊實例(您可能已經在做任何操作)並直接獲取名稱,就可以獲得想要的內容而無需跳過火紅的箍環。

在你的控制器的方法:

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

好的建議,但是,我跳過火焰箍的原因是,所以我不必創建一個團隊模型。我以前是這麼做的,當然它是有效的。但要求我做一個額外的數據庫查詢,這是基本沒有意義的 - 因爲我需要的只是團隊的名稱。 – matthewalexander

+0

我寫的東西是「The Rails Way」。試圖避免一個小的數據庫事務或多或少總是在這一點上過早的優化。我能想到的唯一選擇包括使用javascript在URL中傳遞參數的折磨操作隱藏字段。但是,我遠離專家,所以也許別人知道一種不可思議的方式來將'text_method'從選擇符中轉換爲參數哈希值。 – MarsAtomic