2011-03-09 121 views
0

我一直在尋找永遠找到一個實際的答案是:更新屬性(Rails 3中)

什麼是點擊一個複選框,當通過Ajax更新一個對象的屬性,最好的方法是什麼?這只是一個想要將屬性從false轉換爲true的問題,反之亦然。

關於這個問題,stackoverflow上有一個或兩個線程,但他們要麼使用observe_field(我寧願只是用Prototype函數來做),要麼根本就沒有解決問題。

同樣,這是Rails 3和Prototype。

+0

'observe_field'是一個可以生成Prototype函數的Ruby helper ...爲什麼你不想使用它? – 2011-03-09 06:05:34

+0

@Sean看來,observe_field是根據http://apidock.com/rails/ActionView/Helpers/PrototypeHelper/observe_field折舊↓ – Dty 2011-03-09 10:15:43

+0

@Dty:啊,這是一個很好的理由不使用它,然後... :-) – 2011-03-09 13:08:57

回答

1

我想這是絆倒你的複選框部分?

你真正需要做的是在你的模型的方法來切換到適當的領域

# somewhere in your model 
my_boolean_field.toggle 

然後.click()處理程序綁定到你的複選框做一個Ajax請求。如果您需要,在.click()處理程序回調中,您可以更新複選框,但我不確定是否有必要。

這裏唯一棘手的部分是如果用戶快速點擊複選框多次,該怎麼做。一個選項是在點擊後禁用複選框,直到回調完成。

+0

我猜是什麼讓我沮喪是Rails希望數據被格式化的方式,以及控制器的方式。我想我不得不以某種方式將它發送到更新控制器,但也許最好是如果我爲此操作構建特定的控制器。 – clem 2011-03-09 13:24:01

+0

更新是控制器中的一個**操作**。通常,您將擁有一個與模型相對應的控制器。例如,如果你有一個名爲「book」的模型,你可能會有一個「BooksController」。而且「BooksController」將會有諸如「顯示,更新,創建」等操作。是的,你是對的,你應該創建一個新的**動作來切換你的屬性。 – Dty 2011-03-09 13:56:09

+0

對不起 - 這就是我的意思:TasksController中的更新操作 – clem 2011-03-09 14:52:43