Rails 3 - link_to pour appeler partial en utilisant jquery ajax
Je suis en train d'essayer d'obtenir un link_to pour afficher une partielle via ajax de jquery, mais n'arrive pas à le faire fonctionner (edit: le retour de l'écran est vide) et je ne suis pas sûr de ce que je suis absent. Toute aide serait appréciée.
Je voudrais cliquez sur le lien "Aperçu du Widget", et d'afficher _widget.html.erb dans le div aperçu.
À partir de ma compréhension du lien "Aperçu" Widget devrait appeler l'action def preview_widget qui appelle preview_widget.js.erb qui rend les partiels _widget.html.erb dans le div.
EDIT: lien mises à jour comme par Ignace Reza suggestions
spectacle.html.erb
<%= link_to "Preview Widget", :action => 'preview_widget' , :id => @widget.id, :remote => true %> %>
<div id="preview"></div>
widget_controller.rb
def preview_widget
respond_to do | format |
format.js {render :layout => false}
end
end
preview_widget.js.erb
$( "#preview" ).html( "<%= escape_javascript( render( :partial => "widget", :locals => { :widget => @widget} ) ) %>" );
_widget.html.erb
<% @widget.videos.each do |video| %>
<h3><a href='#'><%= video.name %></a></h3>
<div>
<object height='316' width='540'>
<embed style='border: 1px solid #333333;' height='316' width='540' allowfullscreen='true' allowscriptaccess='always' type='application/x-shockwave-flash' src='<%= video.url %>'>
</object>
</div>
<% end %>
routes.rb
match 'preview_widget' => 'widgets#preview_widget'
source d'informationauteur pagetribe
Vous devez vous connecter pour publier un commentaire.
Ok finalement eu que cela fonctionne avec les modifications suivantes.
routes.rb (ajouté le membre de widget ressources)
spectacle.html.erb (modifié link_to pour correspondre routes)
Cette montre maintenant la partielle. Je ne suis pas encore sûr à 100% ce qui n'allait pas avec le code précédent - au moins, il fonctionne maintenant.
Il n'est pas effacé à votre question, ce que vous "ne pouvez pas sembler obtenir pour travailler".. mais de ce que je vois dans le code que vous avez donné.. tout me semble bon, mais vous manquez le réel de l'appel ajax..
il peut être ajouté en ajoutant :distance => true à la "Preview" Widget lien tel que :
si le comportement par défaut est assez.. ou vous pouvez ajouter votre propre appel ajax sur application.js..
note, je ne pense pas que le réglage de l' :id de l'attribut de "Preview" Widget lien de @widget est sage.. comme il va mettre la représentation de chaîne de widget, qui, généralement, on dirait que "<Widget:0x12412 ..>" il serait peut-être mieux de le changer pour "widget-lien-#{@widget.id}"
J'ai un problème similaire qui m'a amené à cette menace, alors j'ai pensé partager ma solution ici peut être utile à personne.
Avec
:remote => true
j'ai eu un normal Requête HTTP àhttp://localhost:3000/info/about?remote=true
au lieu de la Requête AJAXhttp://localhost:3000/info/about
Le correctif a été facile, mais difficile à trouver!
Dans mon HAML Vue:
MAUVAIS Code qui déclenche une Requête HTTP
OK-Code qui déclenche une Requête AJAX
La seule différence est {accolades}!
Drôle, c'est que la Requête AJAX-je obtenir
info/about.html
rendu, sans le fichier de mise en page. Ce qui n'est pas une partielle, mais est proche de ce que Jan voulu.Je m'attendais à
info/about.js.erb
être rendu.Dans InfoController
-