嘿大家好,我正在開發一個應用程序,並且我在使用新的Rails 3 link_to時遇到了困難。這是情況 - 我的「主頁」頁面上有兩個div,每個div都使用ajax填充到document.load中。這按預期工作。rails link_to:遠離ajax加載的內容
在我加載到這些div的頁面內容中,我想使用link_to ...:remote => true功能。該源按照預期與data-remote =「true」標記進行呈現,但是當我點擊鏈接時,它們完全被忽略(該鏈接被視爲常規超鏈接)。
我已經編寫了能正確處理所有事情的.rjs文件(因爲它們在硬編碼時工作),所以這不是問題。
下面是阿賈克斯加載內容的HTML源:
<div>
<a href="/cart/add/2" data-remote="true">Link A</a>
<a href="/cart/add/1" data-remote="true">Link B</a>
</div>
點擊時通常嵌入到網頁中的鏈接之一,導致我的購物車,以正確地更新......然而,當我動態加載這個內容到AJAX頁面,鏈接只是跟着忽略data-remote =「true」...
最初我以爲它和原型沒有正確加載AJAX的東西有關,但我'我已經檢查了所有這一切,並沒有改變一件事...
我真的很困惑...有沒有人有這個想法?
# add method of controller
def add
product = Product.find_by_id(params[:product_id])
params[:quantity] ||= 1
params[:price] ||= product.price
unless product.nil?
@line = session[:cart].purchase_lines.select {|l| l.product_id == product.id}.first
unless @line.nil?
@line.quantity = (@line.quantity + params[:quantity].to_i)
else # create a new purchase_line in the cart
@line = session[:cart].purchase_lines.build({ :product_id => product.id, :price => params[:price], :quantity => params[:quantity].to_i })
end
else
flash[:error] = "Unable to add the selected product"
end
end
和我RJS
# add.rjs
page.if page['product_' << @line.product_id.to_s] do
page.replace 'product_' << @line.product_id.to_s, :partial => 'line'
page.else
page.insert_html :bottom, 'cart', :partial => 'line'
end
page.replace_html 'sub_total', number_to_currency(session[:cart].sub_total, :unit => '$')
page.replace_html 'tax', number_to_currency(session[:cart].tax, :unit => '$')
page.replace_html 'total', number_to_currency(session[:cart].sub_total+session[:cart].tax, :unit => '$')
page.visual_effect :highlight, 'product_' << @line.product_id.to_s, :duration => 1
我同意... jQuery更好,但我想嘗試RJS/proto,因爲我在看railscasts,並且它們看起來很容易 – sethvargo 2010-11-14 00:50:53