1

Comment obtenir du contenu dynamique lorsque l'utilisateur clique sur différents liens?contenu dynamique en ajax lors du rendu de vues partielles

vues/tableau de bord/index.html.haml

.container 
    - @trips.each do |trip| 
    = link_to trip.id, quick_view_trips_path, remote: true 

Je suis assez sûr que le est incorrect que tous les liens sont ceci:

<a href="/trips/quick_view">1</a> 
<a href="/trips/quick_view">13</a> 
<a href="/trips/quick_view">51</a> 

D'une certaine façon je dois faire ces liens sont dynamiques, et lorsque l'utilisateur clique dessus, la fenêtre modale serait aussi dynamique.

Si je remplace avec juste trip

= link_to trip.id, trip, remote: true 

Rien ne se passe, et les changements d'URL à l'URL correcte, mais ma fenêtre modale ne soit pas rendu par ajax. Voici un exemple de ce que l'URL ressemble maintenant:

<a href="/trips/slug-title-url-correct">1</a> 

En plus de ce que je suis en train d'accomplir avec du contenu dynamique, est-il un moyen de changer peut-être mon URL comme ceci:

<a href="/trips/slug-title-url-correct?quick_view=on">1</a> 

Est-il possible d'obtenir ?quick_view=on en ajoutant à la fin de l'URL et de tout faire fonctionner à nouveau?

Voici le reste de mon code:

vues/voyages/quick_view.js.erb

$('body').append('<%= j render partial: "trips/quick_view" %>'); 

vues/voyages/_quick_view.html.haml

.root-container 
    = @trip.title 
    = @trip.image 
    = @trip.more_details 

Cela ne fonctionne pas non plus pour le moment, car mon application renvoie undefined method

routes.rb

resources :trips do 
    collection do 
    get 'quick_view' 
    end 
end 

trips_controller.rb

def quick_view 
    respond_to do |format| 
    format.html # quick_view.html.erb 
    format.js # quick_view.js.erb 
    format.json { render json: @trip } 
    end 
end 

Ai-je besoin d'ajouter quoi que ce soit à ce contrôleur et d'assurer le bon contenu sera généré par la partie ?

Répondre

1

Que diriez-vous de cette façon,

  1. Chemin

    link_to trip.id, quick_view_trips_path(:js, trip_id: trip.id), remote: true 
    

    Cela rendra, <a href="/trips/quick_view.js?trip_id=1">1</a>

  2. Contrôleur

    def quick_view 
        @trip = Trip.find(params[:trip_id]) 
        respond_to do |format| 
        format.html # quick_view.html.erb 
        format.js # quick_view.js.erb 
        format.json { render json: @trip } 
        end 
    end 
    

    Il resp ond views/trips/quick_view.js.erb fichier

+0

génial! Merci! cela marche – hellomello