2012-05-03 44 views
0

我在如何將以下控制器操作寫入一行中掙扎。我很難弄清楚如何研究答案,甚至是正確的術語,因爲我是Rails和Ruby的新手。我如何將以下內容寫成一行?Rails - 用於在控制器中組合語句的語法

Response.create(params[:response].values) 
Response.create(:responseset_id => @responseset.id) 

回答

1

Response.create(params[:response].merge({:responseset_id => @responseset.id})

回答下列反饋:

params[:response].each do |k,v| 
    Response.create({:question_id => k, :response_set_id => @responseset.id}.merge(v)) 
end 
+0

謝謝。但是,我需要保留'.values',否則我的代碼會中斷。如何在'.values'中添加上述語句?我嘗試了一些不同的變化,但沒有成功。 – diasks2

+0

這會給你一個值的數組,雖然沒有數據的關鍵應該是什麼。什麼是params [:response]?你是否試圖創建一個響應,每個params [:response]或其他東西? – TomDunning

+0

例如:params [:response] = {「2」=> {「user_answer」=>「3」},「3」=> {「user_answer」=>「4」} ...等等}。我無法直接使用提交的參數,因此我必須採用params [:response],然後將散列轉換爲數組:[{「user_answer」=>「3」,「question_id」=>「2」} ,{「user_answer」=>「4」,「question_id」=>「3」}等等]。它來自我的觀點:'<%= fields_for「response [#{q.id}]」do | f | %>' – diasks2