Pergunta

Atualmente estou gerenciamento de vários modelos a partir de uma página de administrador do site único. Eu tenho as seguintes relações:

Sites -> Buildings -> Meters -> Values

Ao lado de cada "Sites" item I have "Editar | Apagar | Adicionar Building" Ao lado de cada item "Construção" eu tenho "Editar | Apagar | Adicionar Meter" Ao lado de cada item "Meter" eu tenho "Editar | Apagar | Add Value" Ao lado de cada item "valor" eu tenho "Editar | Apagar"

Neste ponto eu tenho um controlador frankensteined chamado "SiteManagerController" que administra desta página. Eu simplesmente tenho um método (e via correspondente no arquivo de rotas) assim:

add_site
add_building_to_site
add_meter_to_building

delete_site
delete_building
delete_meter

O que eu estou querendo saber, no entanto, é se há ou não um mecanismo de qualidade pelo qual a usar os métodos controladores de itens CRUD existentes ao ser capaz de processar o arquivo RJS apropriado para a página "SiteManager" e controlador?

Seria bom se eu pudesse de alguma forma rota para o controlador original (de modo a não ter que reescrever todos os métodos manualmente) e, ao mesmo trilhos redirecionar controle (não apenas visualmente, mas contextualmente) de volta para o controlador "SiteManager" depois de criar ou exclusão. Tenha em mente que eu não estou lidando com formas, mas simplesmente uma página de índice e múltipla "link_to_remote" s

Estou muito possivelmente fazendo a pergunta errada, por isso consideramos que ... em qualquer caso, estou aberto a sugestões.

Best.

Foi útil?

Solução

Você pode absolutamente usar os saindo controladores de itens métodos CRUD. Você pode apontar link_to_remote a qualquer url e ele irá inserir o código HTML que você instruí-lo a. Enquanto você manter as rotas padrão em routes.rb, tudo deve funcionar bem. Isto irá manter o usuário na página SiteManager, mas ele estará interagindo com as rotas RESTful nos bastidores.

link_to_remote "Edit", :update => "site_#{site.id}",
     :url => site_url(site), :method => :put
link_to_remote "Add Building", :update => "new_building", :url => buildings_url,
     :method => :post

SitesController < ApplicationController
  def update
    @site = Site.find(params[:site_id])
    @site.update_attirbutes!(params[:site_id])
    render :partial => @site
  end
end

BuildingsController < ApplicationController
  def create
    @building = Building.create(params[:building])
    render :partial => @building
  end
end
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top