2010-09-26 8 views
4

Rails 3 app .... Je les suivantes jQuery qui travaille:jQuery AJAX à Rails 3, dans Rails comment obtenir la variable Passé via les données?

$.ajax({ 
    url: '/navigations/sidenav', 
    data: "urlpath=" + urlpath, 
    success: function(e){ 
     $("#sideNav-container").slideDown("slow"); 
    } 
}); 

URLPath peut être des chemins comme des trucs '/' ou '/ projets' ou '/ auteurs' comme ça.

Ma question est comment puis-je saisir cette variable urlpath dans le contrôleur afin que je puisse l'utiliser à mon avis pour déterminer ce que sidenav pour retourner à l'utilisateur?

Merci

+0

Est-il juste? params [: urlpath] ... Tout ce que je dois faire pour empêcher les injections SQL XSS etc? – WozPoz

Répondre

2

passe dans le URLPath dans un hachage pour la clé « de données ». Comme si:

$.ajax({ 
    url: '/navigations/sidenav', 
    data:{"urlpath":urlpath}, 
    success: function(e){ 
     $("#sideNav-container").slideDown("slow"); 
    } 
}); 

Ceci transmettra ensuite urlpath dans l'objet params auquel vous pouvez accéder à partir de votre contrôleur. Ainsi, vous pouvez tout simplement faire

params[:urlpath] 

et vous pouvez obtenir le URLPath vous passé dans. :)

+0

Des soucis à propos de XSS SQL Injection etc avec ça? Comme cela prend juste un params? En outre, cela semble encoder l'URL, comment puis-je le décoder dans l'application Rails backend? – WozPoz

+1

Est-ce que urlpath est entré par l'utilisateur? Aussi, est-il encodé avant d'être envoyé par ajax, ou est-il encodé une fois qu'il a atteint le contrôleur? – pushmatrix

+0

Eh bien, il n'est pas entré par l'utilisateur, mais il est pris à partir de l'URL du navigateur qu'un utilisateur pourrait modifier. Un utilisateur peut également publier une variable invalide pour essayer de pirater le système droit? Juste curieux si params gardes sûrs contre cela ou si j'ai besoin d'ajouter quelque chose de plus? – WozPoz

Questions connexes