Donde pongo el metodo del controlador, para un partial compartido entre dos controladores?

Bueno, el titulo quizás no es muy claro: El caso es que ya lo tengo
funcionando pero creo que es una chapuza. Soy nuevo en Ruby y mas en
MVC.

---->
Antes de exponer mi caso haré la pregunta, y después, por si tenéis mas
paciencia, entro en mi caso:
Si tenéis un partial que usa un controlador/metodo (para recargarse
mediante JS, p.ej) y es compartido entre dos controladores, donde ponéis
dicho codigo? me refiero a este metodo/controlador que recarga el
partial. En que carpetas? partial y controlador
<----

Mi caso:
Tengo un partial con tres selects relacionados, que hacen una llamada JS
a un metodo/controlador para recargarse: metodo=initialize_region y
controlador=ApplicationController

Y este div (los tres selects) los uso en dos pantallas: un controlador
“menu” para buscar, y un controlador “mantenimiento” para grabar datos
nuevos. Y mediante render :partial. este partial esta en views/shared/.

El partial esta en una carpeat comun (shared) y el metodo
(initialize_region) en ApplicationController.

Lo raro:
Estos dos controladores (menu y mantenimiento) llaman a este metodo
(initilize_region que lo ven porque esta en ApplicationController), pero
para inicializar variales, NO como redirect_to. Y al mismo tiempo
mediante JS estos selects ,desde el partial, llaman a este mismo metodo
para recargarse.

Para hacer esto en initialize_region he puesto:

# recargo variables de los combos...

if request.xhr?
  respond_to do |format|
      format.js
  end

para que responda a las llamadas JS solo cuando se llama desde el
navegador (JS), y no cuando se llama desde el metodo index del
controlador menu, o desde el mantenimiento, donde solo tengo:

en el caso del index (controlador menu)

def index
#@variables que no vienen al caso

initialize_region

respond_to do |format|
  format.html
end

end

Y para que me responda bien con JS, la llamda del partial, he tenido que
poner el initialize_region.js.rjs en la carpeta views/application.

Esto funciona, pero es normal? esta llamada al initialize_region que es
como “bifuncional”, como controlador de una llamda del navegador, y como
una llamada a un metodo comun entre dos controladores, como un modulo.

Bueno muchas gracias. Hay algo hecho en www.aonanem.cat y
www.aonanem.cat/treks/new, donde se ve algo de todo esto

Muchas gracias por todo.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs