2012-10-25 5 views
0

J'ai été bloqué sur cela pendant environ 2 semaines. J'ai besoin d'aide de la bonne façon pour le faire. J'ai deux modèles. Le premier modèle est Leads. Le modèle deux est des références.Rails 3 mettre à jour deux modèles en utilisant ajax

Leads belongs_to références

Parrainages has_many mène

Dans l'écran de saisie de plomb il y a une partie qui affiche possibles référenceurs pour la tête à sélectionner. Il y a un lien Add Referral dans le partial qui fait apparaître un modal utilisant le bootstrap de Twitter comme framework css. De cela, je rends la nouvelle action du contrôleur de référence.

Tout cela fonctionne jusqu'à maintenant. Ce que je veux arriver, c'est que je puisse ensuite entrer une nouvelle référence, qu'elle soit sauvegardée, que la modalité se referme et que la liste des références dans la partie partielle de la vue Edit/new Leads soit ensuite mise à jour pour refléter la nouvelle référence ajoutée. Mais à ce stade, j'ai maintenant imbriqué form_for. Ainsi qu'un formulaire de recommandation qui fonctionne avec un autre contrôleur. Je ne suis pas sûr de la façon dont je devrais aborder cette question. J'ai cherché et essayé différentes méthodes pour quelques semaines maintenant. Est-ce que je me répète et reconstruis complètement la vue Referral et le contrôleur sous le contrôleur Leads et l'affichage? Un code répétitif comme celui-là est la raison pour laquelle je suis passé aux rails, et pourquoi je pense que je ne regarde pas cela correctement. Il doit y avoir un moyen simple de contourner cela. J'ai regardé en utilisant des gemmes comme Draper et Cell, et j'ai lu sur l'utilisation des présentateurs. Mais ceux-ci semblent tous être des solutions pour un type de vue de tableau de bord, pas ce que j'essaie d'accomplir.

Toute aide ou direction serait grandement appréciée.

Merci ...

Répondre

1

C'est ainsi que je programme ce genre de problème.
Cela fonctionne pour moi, peut-être que vous pouvez vous adapter à votre propre situation.

Eh bien, vous create action sur yout Referral Controller devrait répondre avec javascript.

if @referral.save 
    format.js 

De cette façon, vous aurez un fichier create.js.erb whitin le dossier de vues où vous gardez les vues de votre référence.
Dans le create.js.erb vous pouvez avoir quelque chose de similaire à ceci:

$('#modal_id').hide(); // Hide the modal or if you prefer, remove from DOM. 
$('#referral_list_id').chidren().delete(); // Remove the list of referrals. 
$('#referral_list_id').html(
    "<%= escape_javascript(render('referrals_list')) %>" 
); // Render a partial with the new content from your controller. 

Votre form pour une nouvelle referral dans votre modal, devrait être éloigné aussi:

<%= form_for @referral, :remote => true do %> 

Peut-être que vous courrez dans certains gotchas tandis que mettre en œuvre de cette façon, mais je crois que c'est un peu facile à résoudre.

+0

Merci pour votre inscription. J'ai rencontré quelques problèmes. Le premier était de trouver le bon emplacement (je les avais imbriqués l'un dans l'autre), l'autre avec le fichier create.js.erb que je devais déplacer le $ ('# modal_id'). Hide() la dernière instruction sinon si elle courait comme la première déclaration dans le fichier js les autres n'avaient aucun effet. En tout cas merci, cette aide me met sur la bonne voie pour trouver une solution. –

+0

Pas de problème, vraiment heureux d'aider. – MurifoX

Questions connexes