2011-12-15 27 views
0

我正在創建一個類似的報表,每行旁邊有一個複選框。每行都有一些可編輯的字段(如註釋)。我想要的是讓用戶能夠通過選中該行旁邊的複選框來檢查他/她想要更新哪些行。然後,我會在窗體底部有一個保存按鈕,只更新旁邊有複選框的行。如何更新表格的某些部分

我對軌道和網絡編程一般都很陌生,所以你可能給我的任何建議/方向應該是有幫助的。

回答

2

一種流行的方式實現這一目標是:

1-你所有的複選框都應該使用相同的名稱。

2-所有你的複選框值應行/對象

3-的ID當POST形式中,只有選中的複選框處於POST數據。檢索這些IDS並僅更新這些對象。

例如,您的複選框應該是這樣的:

<%= check_box_tag "row_ids[]", row.id, false, :id => "row_#{row.id}" %> 

然後,在你的控制器:

Row.find(params[:row_ids]).each do |row| 
    # do whatever you want 
end 
+0

在我的控制器中的行是否必須是模型?或者你的意思是在我的報告背後使用模型? – Ramy 2011-12-15 20:48:00

1

那麼你可以做到這一點,但它增加了用戶更多的工作:他們在點擊更新之前必須檢查多個複選框。它更好,如果他們只是點擊更新和它的工作。

基本思想是您希望用戶只需點擊更新,而您的代碼只會更新更改的記錄。

你可以做的是存儲(在一個隱藏的字段標籤)每行記錄的ID。然後,當你更新時,你遍歷所有行,並從數據庫中抓取(根據存儲在隱藏字段中的ID)記錄。比方說,只有評論是可編輯的。然後,您可以檢查註釋是否實際發生了更改(如使用簡單的字符串比較),並且如果它們已更新。如果更多的東西是可編輯的,那麼在決定是否需要更新之前,您也可以檢查它們。

這是一個高層次的描述,但讓我知道你是否想要更多的實現細節。