2010-03-16 63 views
3

我在想,如果基本的link_to語法在當前的rails3 master中完全破壞,或者我在這裏做了一些錯誤的語法。link_to語法與rails3(link_to_remote)和基本的JavaScript不工作在rails3應用程序?

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

實際上應該在點擊時產生警報。很簡單。不適用於我的rails3項目! (也沒有錯誤輸出!)任何想法?

對於普通的link_to語法我無法找到一個例子在那裏我可以一個link_to_remote與確認,遙控器和HTML類結合(見下文我試試)

= link_to "delete", {:action => "destroy", :remote => true, :method => :delete, :confirm => "#{a.title} wirklich Löschen?" }, :class => "trash" 

即使是Rails3中API不幫我這裏:http://rails3api.s3.amazonaws.com/index.html

幫助!

回答

13

我相信你的問題在於你已經設置了鏈接來顯示提醒時,它被舔,而不是當它被點擊。 ;)

至於link_to_remote,它隨着切換到不顯眼的javascript而改變。你可以在這裏閱讀:http://blog.solnic.eu/2009/09/08/unobtrusive-javascript-helpers-in-rails-3.html

+0

嘿嘿,謝謝你的錯誤提示。不幸的是,這不是問題,但新的不顯眼的JavaScript助手需要一個元標籤包含。感謝指針,雖然! ;) – z3cko 2010-03-19 19:07:56

+0

該鏈接去404 – simianarmy 2012-04-18 16:32:12

+0

@simianarmy謝謝,修正 – mckeed 2012-04-18 18:42:28

3

零不起作用:

= link_to "name", nil, :onclick => "alert('Hello world!');" 
=> <a href="/currentpath", onclick="alert('Hello world!');">name</a> 

你應該使用:

= link_to "name", "#", :onclick => "alert('Hello world!');" 
=> <a href="#", onclick="alert('Hello world!');">name</a> 
1

如果沒有這裏的其他答案的爲你工作那麼也許這將幫助。

因此,csrf_meta_tag聲明對我來說還不夠,儘管應該將其添加到Rails 3的佈局文件中。與我一起,這是與jQuery的衝突。我只是把這個:

<script type="text/javascript"> 
    jQuery.noConflict(); 
</script> 

在我的佈局rails腳本標記和原型和jQuery之間的衝突解決。嘿presto我得到刪除確認對話框。

此技術也解決了我使用link_to嘗試刪除記錄時的原始問題。隨着link_to任何銷燬命令似乎重定向到記錄的顯示頁面。因此,我根據我看到的其他解決方案轉移到button_to,但沒有確認。我不知道jQuery和Prototype是否有更深層次的問題。

這一切都發生在升級的Rails 2.3.5應用程序,似乎工作正常,無需在我的佈局文件中包含Prototype或:defaults。

在一個側面說明我並按照下列指示:

http://webtech.union.rpi.edu/blog/2010/02/21/jquery-and-rails-3/

嘗試和失去原型一起爲這個項目並使用爲Rails 3,而不是jQuery的git的子模塊。按照這些說明不起作用,並且在使用link_to時,我仍然沒有使用button_to和show頁面確認對話框。只是覺得我會提到它,所以除非有人試圖這樣做的麻煩。

上面,因爲我還不能發表評論:(答案
+0

順便說一下,我從這個頁面找到解決方案: http://featurenotbug.com/2009/05/getting-jquery-and-prototype-to-work-together-in-rails/ – robeastham 2010-09-01 14:29:06

1

閒談評論

@robeastham: 我想我會留下一些評論認爲,可能與一些你encoutered問題幫助

我一直有「銷燬鏈接重定向到顯示頁面,而不是索引頁面」的問題以及從ActiveRecord切換到Mongoid,並沒有找到一個真正的解決方案(已經刪除了原型)但是,一個乾淨利落的解決方法是明確指定使用以下位置的重定向路徑:location to respond_with:

respond_with @themodel, :location => themodels_url 

至於得到一個確認彈出了一個按鈕,你可以這樣做:

button_to "Button Name", { :controller => "your/controller", :action => :action_name, :confirm => "Text for the pop-up"}, { :method => :<method name> } 

例如

button_to "Click Here", { :controller => "home", :action -> :set_completed, :confirm => "Mark the item complete?" }, { :method => :put } 
0

這爲我工作:

<%= link_to "Recommend", recommend_user_path(@user), :remote => true %>

檢查,這是你的意見\佈局\ application.html.erb(或同等學歷):

<%= csrf_meta_tags %>

請注意,Rails v3.2.2使用「標籤」而不是「標籤」