2017-05-25 30 views
1

我在視圖中創建一個選擇框,這樣以後:獲取控制器select_tag鍵值對提交

<% contact = Contacts.all.map{|x| [x.name.to_s.capitalize] + [x.id]} %> 
<%= select_tag("selectedContact", options_for_select(contacts)) %> 

,並在控制器獲得所選擇的值是這樣的:

contact_id = params[:selectedContact] 

現在,在一些我需要匹配聯繫人姓名的情況。有什麼辦法可以同時獲得所選聯繫人的ID和姓名嗎?

回答

2

使用,[{ x[:name] => x[:id]}]

<% contact = Contacts.all.map{|x| [x.name.to_s.capitalize] + [{ x[:name] => x[:id]}]} %>

在控制器中,

contact_name = params[:selectedContact].keys[0] 
contact_id = params[:selectedContact][contact_name] 
+0

它說語法錯誤,意想不到的 ':' 在第一行 – manoj

+0

檢查更新的答案,'<%觸點= Contacts.all.map {| X | [x.name.to_s.capitalize] + [{x [:name] => x [:id]}]}%> – Sravan

+0

我在控制器中得到了params [:selectedContact]中的名字,但沒有id – manoj

1

感謝@Sravan,我做到了通過與視圖名稱串聯ID和後來在控制器分裂它來獲得ID和名稱。 在View:

<% contact = Contacts.all.map{|x| [x.name.to_s.capitalize] + [x.id.to_s+'_'+x.name.to_s]} %> 

和控制器:

contact_id = params[:selectCPA].split('_')[0] 
contact_name = params[:selectCPA].split('_')[1]