Salut tout le monde, je travaille sur une application et j'ai de la difficulté avec le nouveau Rails 3 link_to. Voici la situation - J'ai deux divs sur ma page "home", et chaque div est peuplé à document.load avec ajax. Cela fonctionne comme prévu.rails link_to: distant du contenu ajax
Dans le contenu des pages que je charge dans ces divs, je veux utiliser la fonction link_to ...: remote => true. La source se comporte comme prévu avec la balise data-remote = "true", mais lorsque je clique sur les liens, ils sont complètement ignorés (le lien est traité comme un lien hypertexte).
J'ai écrit des fichiers .rjs qui gèrent tout correctement (parce qu'ils fonctionnent en mode codé), donc ce n'est pas le problème.
est ici la source html pour le contenu ajax chargé:
<div>
<a href="/cart/add/2" data-remote="true">Link A</a>
<a href="/cart/add/1" data-remote="true">Link B</a>
</div>
En cliquant sur un de ces liens quand normalement intégrés dans la page provoque mon panier de mettre à jour correctement ... Cependant, quand je charge dynamique ce contenu dans la page avec AJAX, le lien suit juste et ignore le data-remote = "vrai" ...
A l'origine, je pensais que cela avait quelque chose à voir avec le prototype ne se charge pas correctement dans les choses AJAX, mais je ' J'ai vérifié tout ça et ça ne change rien ...
Je suis vraiment confus ... Quelqu'un at-il une idée à ce sujet?
# 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
et mes 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
Je suis d'accord ... jQuery est tellement mieux, mais je voulais essayer RJS/proto parce que je regardais les railscasts et ils ont fait paraître si facile – sethvargo