2010-02-12 94 views
24

我只是在玩Rails 3測試版,並注意到link_to_function現在不見了。我猜想有一種實現相同結果的替代方法(onclick事件?),但我想知道是否有更多的Rails-3的方法來做到這一點。 TIA。link_to_function在Rails 3中消失了嗎?

+2

對於任何人誰通過谷歌發現這一點,應該指出的是,link_to_function既在萊ls 3和NOT棄用。請參閱https:// github。com/rails/rails /提交/ d69e561或答案在這裏:http://stackoverflow.com/questions/5063246/rails-3-status-of-link-to-function-method – noel 2012-05-03 16:14:56

回答

27

Rails 3似乎已經取消了Prototype Helper而轉而採用了不太顯眼的/ JS庫不可知的方法。目標是消除由Rails生成的所有內聯JavaScript。 Prototype Helper生成了幾乎所有的javascript。

現在,只要提供:remote => true選項,任何helpers的非遠程變體都將在您選擇的JS庫中爲遠程調用生成適當的javascript。

不幸的是,這並不適用於x函數方法。目前有prototype legacy helpers,它們不再是Rails的核心部分。

您也可以使用ActionView :: Helpers :: PrototypeHelper :: JavascriptGenerator :: GeneratorMethods中定義的調用來將javascript代碼提供給:onclick作爲link_to的html_option,但這並不完全漂亮。

例子:

Rails < 3      | Rails 3 
link_to_remote "target", url | link_to "target", url, :remote => true 
form_remote_for @post   | form_for @post, :remote => true 

等....

或者其他類似的效果。我很難找到官方文件來支持我的說法。所以release notes將不得不現在做。

在您使用它之前,您需要包含正確的js源文件。確保你正在載入prototype.js和rails.js,或者JS框架的庫和驅動程序。

請記住,Rails 3現在處於測試階段。但這並不意味着它已經完成。我真的不知道如何取代link_to_function。它違背了不引人注意的JavaScript的理想。

+0

問題是關於link_to_function(即。直接調用JavaScript,沒有UJS的東西)。無論如何感謝您的信息。 – Psynix 2010-02-12 07:46:53

+0

我在寫這篇文章時錯過了「功能」。我已經更新瞭解決方案,並針對具體問題提供了更好的答案。 – EmFi 2010-02-12 08:17:25

8

要回答我的問題,似乎這個作品,是足以讓我需要什麼:

link_to "name", nil, :onlick => "alert('Hello, world!')" 
+9

該解決方案的問題是完全突兀。我會建議你玩jQuery或原型+低親。 – 2010-02-12 11:16:30

+1

我不認爲這是「完全」突兀的,只要你從onclick =「」調用一個處理程序,而不是在那裏實現它。整個UJS的東西還沒有成熟,甚至它的創作者也不同意推薦的東西(見http://weblog.jamisbuck.org/2010/3/2/unobtrusive-yet-explicit包括評論)。 – Matt 2010-10-06 14:38:05

0

link_to_remote可以這樣

的link_to 「目標」 來完成,:遠程=>真

,並做了ajax開機自檢/讓你有

的link_to 「目標」,{:控制器=> 控制器:操作=>方法,},:遠程=>真

在軌道2是這樣

link_to_remote「目標」:URL => {:控制器=>控制器:動作=> 方法,}:遠程 =>真

相關問題