2017-06-26 29 views
3

我想讓用戶看到一些選項(我目前正在嘗試使用複選框)選擇多個項目,然後變成一個單一的字符串連接到逗號當用戶提交它,例如:Rails:多個選項到一個單一的字符串

<%= f.check_box :answer %><%= option.description %> 
<%= f.check_box :answer %><%= option.description %> 
<%= f.check_box :answer %><%= option.description %> 

其中:答案是我的回答模型和描述的屬性是我的期權定價模型的屬性,如果選擇了多個選項,我希望他們能夠被保存爲一個字符串像這樣:

"description1,description2,description3" 

爲了將它保存到我的單個列tabase,我該如何做到這一點?

回答

1

您可以創建多個複選框將他們multiple選項,這樣你可以有:

<%= f.check_box :answer, { multiple: true }, 'first', false %>First 
<%= f.check_box :answer, { multiple: true }, 'second', false %>Second 
<%= f.check_box :answer, { multiple: true }, 'third', false %>Third 

注意,你還需要指定false選項「可以擺脫」所有不需要的值生成一組多個check_boxes,如["0", "0", "second", "0", "third"],由於unchecked default values,因此,check_box幫助程序中的最後一個參數,您只能得到["second", "third"]

所以,現在有隻是一個數組是容易persiting對象進入數據庫之前加入這些值,這可以直接在控制器做,如果你想:

@answer = Answer.new(answer_params) 
@answer.answer = params['answer']['answer'].join(',') 

這裏你得到的值params ['answer'],表格,特別是你創建的複選框,因爲它可以使用join加入他們用逗號,,所以你會得到「第二,第三」,並且通過這種方式,您可以爲多個複選框設置答案模型的答案屬性。

+0

非常感謝!有沒有辦法在第二行中調用所有參數?我在每個答案上有不定數量的選項,出於某種原因,它不會讓我保存數據庫的答案,這可能會成爲問題嗎? – IvanH

+0

你的意思是迭代一個選項的ActiveRecord結果,並得到每個'option.description'? –

+0

我目前正在爲問題的每個單一選項創建一個複選框,在檢查控制檯後,我已將問題描述爲「未經許可的參數:答案」,我也可以在控制器中添加一個if以避免加入params if它已經是一個字符串?即:用戶回答text_field的答案 – IvanH

相關問題