2009-11-05 28 views
2

當我解決了這個問題時,我在網站上工作,我的博客有100個帖子,我一次給他們分配10個,我顯示第15個並顯示鏈接底部基本上是使用link_to_remote標籤實現的。關於RJS和使用link_to_remote的問題

<%= link_to_remote "More Posts", :url => {:action => 'view' ,:id => link.to_i + 1} , :html => {:id => 'more-link'} %> 

我點擊那個和得到下一個15個職位,並將其追加到通過insert_html含1 15個職位現在

page.insert_html :bottom, :puzzles , :partial => 'puzzles', :object => @puzzles 

我想要的容器在的底部的鏈接頁面進行更新,以便下次用戶點擊更多的第三個批次時提取等等。基本上就像

page.replace_html 'more-link', link_to_remote "More Posts", :url => {:action => 'view' ,:id => link.to_i + 1} , :html => {:id => 'more-link'} 

任何線索,我怎麼能做到這一點?

回答

2

你非常接近。

用(DOM_id,渲染選項)調用replace_html。基本上你想渲染一個link_to_remote調用的輸出。但是你沒有通過渲染可以使用的形式傳遞它。正如Barry Hess所指出的,替換更適合這項任務,因爲大部分改變的都是標籤屬性。

使用replace_html會導致可能導致問題的嵌套標記。你想完全替換元素。 Replace與replace_html具有相同的語法,因此如果您只是替換replace_html,則會遇到同樣的問題。

這裏有你想要的東西:

page.replace 'more-link', :text => link_to_remote "More Posts", 
    :url => {:action => 'view' ,:id => link.to_i + 1} , 
    :html => {:id => 'more-link'} 

但是我不知道如果link_to_remote是RJS訪問。如果以上不工作,你總是可以做到這一點:

page.replace 'more-link', :inline => "<%= link_to_remote 'More Posts', 
    :url => {:action => 'view' ,:id => link.to_i + 1}, 
    :html => {:id => 'more-link'} %>", :locals => {:link => link} 
+2

實際上,將'page.replace'更好地工作時,將替換整個元素,而不僅僅是內部HTML。也可以爲這個特定的'link_to_remote'創建一個輔助方法,這樣所有的URL和HTML參數都不會重複。 – 2009-11-05 15:07:19

+0

@巴里,你完全正確的替換與replace_html。事實上,替換\ _html對於這項工作是完全錯誤的。我已經更新了您的建議的答案,並提供了有關替換\ _html錯誤的解釋。 – EmFi 2009-11-05 15:47:30

+0

你給我的解決方案完美的工作,現在如果我想在rjs文件中有條件,基本上如果鏈接== -1的值我想用一個禁用的html屬性替換鏈接,我該怎麼做? – Shiv 2009-11-06 16:53:17