我正在創建一個類似的報表,每行旁邊有一個複選框。每行都有一些可編輯的字段(如註釋)。我想要的是讓用戶能夠通過選中該行旁邊的複選框來檢查他/她想要更新哪些行。然後,我會在窗體底部有一個保存按鈕,只更新旁邊有複選框的行。如何更新表格的某些部分
我對軌道和網絡編程一般都很陌生,所以你可能給我的任何建議/方向應該是有幫助的。
我正在創建一個類似的報表,每行旁邊有一個複選框。每行都有一些可編輯的字段(如註釋)。我想要的是讓用戶能夠通過選中該行旁邊的複選框來檢查他/她想要更新哪些行。然後,我會在窗體底部有一個保存按鈕,只更新旁邊有複選框的行。如何更新表格的某些部分
我對軌道和網絡編程一般都很陌生,所以你可能給我的任何建議/方向應該是有幫助的。
一種流行的方式實現這一目標是:
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
那麼你可以做到這一點,但它增加了用戶更多的工作:他們在點擊更新之前必須檢查多個複選框。它更好,如果他們只是點擊更新和它的工作。
基本思想是您希望用戶只需點擊更新,而您的代碼只會更新更改的記錄。
你可以做的是存儲(在一個隱藏的字段標籤)每行記錄的ID。然後,當你更新時,你遍歷所有行,並從數據庫中抓取(根據存儲在隱藏字段中的ID)記錄。比方說,只有評論是可編輯的。然後,您可以檢查註釋是否實際發生了更改(如使用簡單的字符串比較),並且如果它們已更新。如果更多的東西是可編輯的,那麼在決定是否需要更新之前,您也可以檢查它們。
這是一個高層次的描述,但讓我知道你是否想要更多的實現細節。
在我的控制器中的行是否必須是模型?或者你的意思是在我的報告背後使用模型? – Ramy 2011-12-15 20:48:00