2011-11-28 40 views
1

這是我在代碼軌道3.1的Rails 3.1的link_to遠程=>真實呈現HTML代替JS,相同的代碼在某些情況下

<%= link_to 'All',:action => "bycategory", :id => 'All', :remote => true %> 

我已經定義了一個js.erb。這段代碼工作得非常好,即當把表放入某個CSS時調用JS。當我只是更改表ID或放入無序列表或其他任何地方時,它會在尋找html.erb時給我造成模板錯誤。只需跳動我:(。

我發現的一件事是,在第一種情況除了id和遠程,它也發送時間戳 在第二種情況下,時間戳丟失。不知道這是爲什麼發生 任何幫助將不勝感激,已經花了太多的時間調試這個

+0

我不確定我完全理解這個問題。罪魁禍首可能是,由於在運行時在瀏覽器上設置了遠程操作,當找不到id(或者如果瀏覽器上未啓用javascript),則鏈接指向任何地方。使用螢火蟲在瀏覽器上調試動作。 – baol

+0

這種不一致性讓我感到困惑,另外一種行爲是,如果有兩個請求,一個是remote => true,而另一個沒有這個,那麼在表的兩個不同行中只有一個有效。 – user1069240

+1

添加':remote => true'只會添加html屬性'data-remote =「true」',然後應該由'jquery-rails'處理。放入':remote => true'時,是否正確生成了'data-remote =「true」? –

回答

1

你可能想將:action =>「bycategory」和:ID =>「所有」在哈希作爲

<%= link_to 'All', { :action => "bycategory", :id => 'All' }, :remote => true %> 

這將生成正確的html屬性,即data-remote =「true」,否則它將簡單地處理所有後續事件g作爲http請求屬性。您的代碼將產生 -

<a href="/bycategory?id=All&amp;remote=true">All</a> 

而使用哈希將生成類似於

<a data-remote="true" href="/bycategory/All">All</a> 
2

東西,我有同樣的問題和Rails 3.1.3,我用耙資產治癒嗎:預編譯,但保證你有在application.js「// =需要jquery_ujs」而不是「// = require jquery」,這是主要的問題,我花了至少12個小時才決定這樣做!可怕!

+0

謝謝!你的回答使我走向正確的軌道。我有同樣的問題,實際上需要jquery_ujs,但我也將JavaScript庫緩存到一個文件中:'javascript_include_tag * js_libraries,:cache =>'cached_js''。所以我試圖刪除:緩存參數,它的作品:)。 –

相關問題