2013-05-03 3 views
0

À mon avis, je veux que l'utilisateur puisse parcourir un catalogue de produits. La hiérarchie est la suivante:Comment implémenter cette fonction liée à la fonction imbriquée?

Category 
    Product 
    AdditionalInfoForm 

À mon avis principal que j'effectue un rendu partiel pour les catégories:

#opContent 
    = render :partial => 'op_main_categories' 

Le op_main_categories partiel est défini comme suit:

- @controller.getPortalCategories.each do |c| 
    = link_to_function "#{c.name}", :class => 'opCategoryHeaderText' do |page| 
    - partial = escape_javascript(render :partial => 'op_secondary_categories', :locals => { :c => c }) 
    - page << "$('opContent').update(\"#{partial}\")" 

Lorsque l'utilisateur clique sur un lien dans le partiel ci-dessus, les produits sont rendus au moyen de l'op_secondary_categories partielle:

- @controller.getPortalProductsForCategory(c).each do |p| 
    = link_to_function "#{p.name}", :class => 'opCategoryHeaderText' do |page| 
    - partial = escape_javascript(render :partial => 'op_did_line', :locals => { :p => p }) 
    - page << "$('opContent').update(\"#{partial}\")" 

op_did_line est le texte brut pour l'instant:

%p Yes, this is form! Hello? 

Cette configuration va générer le lien suivant (pour une catégorie):

<a class="opCategoryHeaderText" onclick="$('opContent').update("<a class=\"opCategoryHeaderText\" href=\"#\" onclick=\"$(\'opContent\').update("<p>Yes, this is form! Hello?</p>\n"); return false;\">IPSDN + PVC 3yr<\/a>\n<a class=\"opCategoryHeaderText\" href=\"#\" onclick=\"$(\'opContent\').update("<p>Yes, this is form! Hello?</p>\n"); return false;\">PVC<\/a>\n"); return false;" href="#">PVC</a> 

Ajout du deuxième niveau de link_to_function brise tout le code . Je ne suis plus capable de parcourir la hiérarchie. Quand il n'y a qu'un seul link_to_function présent, je peux naviguer.

Ce projet utilise toujours Rails 2.3. Quelle est la meilleure façon de mettre en œuvre cela?

+1

Est-ce un copier-coller du code réel? Parce que je vois des erreurs de syntaxe. L'affichage du code réel aiderait. Ainsi que l'affichage de l'erreur que vous obtenez. –

+0

'.replaceWidth()' n'est pas une méthode PrototypeJS - elle devrait être '.replace()' –

Répondre

Questions connexes