criando varios models com um form!
|
|
Algum tempo passei por algumas dificudades de como implementar um mestre-detalhe com rails!—opa! o que é um mestre-detalhe?! Mestre detalhe é quando temos uma entidade “forte” que tem entidades “fracas” que não tem sentido existir sozinhas. Então uma maneira de resolver isso é quando salvar a entidade “forte” salvar as entidades “fracas” tambem. let’s go! Temos o seguinte cenario: tenho um cadastro de “Bar” e nele temos que cadastrar as “Cervejas” que são vendidas nesse bar. bar_controller.rb bar/novo.rhtmllegal! mas isso ainda ta muito “estatico” quero a liberdade para inserir quantas cervejas eu quizer. Uma boa solução é adicionar as cervejas dinamicamente com um rjs. Vamos refatorar! bar/novo.rhtml bar/_cerveja_fields.rhtmlblz… de sobra ainda criamos um DIV com id unico baseado no index para cada cerveja! Agora só ta faltando um link para inserirmos mais cervejas para nosso bar. bar/novo.rhtmlVamos usar ajax para adicionar as cervejas. Vamos criar no controller um metodo para responder a nossa requisição ajax. bar_controller.rb bar/nova_cerveja.rjsPronto agora temos um rjs que adiciona dinamicamente as cervejas! mas perai… FUCK! o partial “cerveja_fields” precisa de um index para gerar os DIV para cada cerveja… e agora?! Uma boa saida para esse probelma é quando fizer a requisição para uma “nova_cerveja” mandar a quantidade de cerveja que já existe e incrementar. bar/novo.rhtml bar/nova_cerveja.rjsblz! mas ainda temos um problema nosso link de para adicionar uma nova cerveja esta estatico com o tamanho sempre fixo. Vamos arrumar isso… bar/novo.rhtml bar/_nova_cerveja_link.rhtml bar/nova_cerveja.rjsAgora quando adicionamos uma nova cerveja atualizamos o DIV do link. Só esta faltando o link para remover uma cerveja. bar/_cerveja_fields.rhtml remover_cerveja.rjsA baixo temos o codigo completo: bar_controller.rb bar/novo.rhtml bar/_cerveja_fields.rhtml bar/_nova_cerveja_link.rhtml bar/nova_cerveja.rjs bar/remover_cerveja.rjs=* |
|
|
Isso é um artigo. |
|
|
E muito bom, por sinal! |
|
|
Parabéns pelo ‘Artigo’. Eu ia deixar este post passar sem comentar, porém, percebo o quanto é importante reconhecer um ótimo trabalho quando ele é voluntariamente bem feito. Mais uma vez parabéns. |
|
|
Baita pinguço ;) Traz uma pra mim garçom! Parabens ae pelo artigo! ;) |
|
|
Existe um controller EDIT para este codigo??? |
|
|
Ainda estou aprendendo sobre o Rails. Estou com um problema. Eu tenho uma view que mostra uma tabela com dados tirados do banco de dados. Uma coluna se chama ‘status’ que tem 3 possibilidades para a ocorrência: ABERTA, EM ANDAMENTO, FECHADA, havendo uma tabela em BD apenas para cuidar disso, tendo cada ‘status’ um ID. Para o ‘status’ ABERTA há um link que direciona para outra página. Quando o link é ‘acionado’, preciso mudar o ‘status’ de ABERTA para EM ANDAMENTO. É uma espécie de atualização da página. Alguém sabe me dizer como fazer isso? Com o ‘link_to’ ele apenas direciona, e não altera, sendo que coloquei os comandos no ‘controller’ para alterar o ID corrente. Tentei usar ‘link_to_remote’, mas não direciona a página e nem altera. Qualquer ajuda é bem vinda… |
|
|
Utilize a opção :update do link_to_remote e coloque o status em um div. Exemplo de uso: link_to_remote("Mudar status", :update => "id do div com o status escrito",
:url => { :action => "sua action" })
Se vc tiver um div assim: <div id="status">ABERTO</div> e colocar um link_to_remote assim: link_to_remote("Mudar status", :update => "status",
:url => { :action => "muda_status" })
Basta a sua action muda status rendenizar algum texto que o conteúdo do div status será atualizado. Exemplo: def muda_status render :text => "EM ANDAMENTO" end Mais informacoes: http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html |

