2010-05-03 3 views
1

j'ai décidé d'essayer d'utiliser les cellules de plugins rails:Ruby on Rails contrôleur et l'architecture avec des cellules

http://cells.rubyforge.org/community.html

étant donné que je suis nouveau à Ruby et très habitués à penser en termes de composants. Puisque je suis en train de développer l'application au coup par coup puis de la reconstituer pièce par pièce, il est logique de penser en termes de composants. Donc, j'ai réussi à faire fonctionner correctement les cellules dans une seule vue, qui appelle un partiel. Maintenant, ce que j'aimerais pouvoir faire (mais peut-être que mon instinct doit être redirigé pour être plus "Rails-y"), c'est appeler un seul contrôleur de cellule et utiliser les paramètres pour rendre une sortie plutôt qu'une autre.

En fait, il y avait un contrôleur comme:

def index 
    params[:responsetype] 
end 

def processListResponse 
end 

def processSearchResponse 
end 

et j'ai deux méthodes de contrôleur différentes que je veux répondre à en fonction du type de réponse params, où j'ai un seul modèle à l'extrémité avant et veulent que le "composant" interne rende le rendu différemment selon le type de requête effectué. Cela me permet de réutiliser le même code frontal.

Je suppose que je pourrais le faire avec un appel ajax à la place et juste avoir rediffuser le composant sur le front-end, mais ce serait bien d'avoir l'option de le faire de toute façon et de comprendre comment architecturer Rails mieux dans le processus. Il semble qu'il devrait y avoir une option "render" dans le cadre des cellules pour rendre à un certain contrôleur ou vue, mais ça ne fonctionne pas comme je l'espère et je ne sais pas si je suis même dans le stade .

Merci!

+2

En une seule phrase, quelle est votre question? – mcandre

Répondre

0

Comment la cellule peut-elle savoir dans quel contrôleur elle est rendue? Cela casserait l'encapsulation.

Vous pouvez utiliser #render_cell dans votre vue de contrôleur et peut-être mettre un peu de décision autour de lui? Est-ce ce que vous demandez?