Criação de formulários para dados relacional em Rails
-
22-07-2019 - |
Pergunta
Eu tenho um formulário que eu preciso de exibição para uma tabela que tem um relacionamento com um par de outras mesas. Por exemplo, eu tenho uma tabela "casos" (acho que, caso o investigador), que requerente has_one e cliente has_one.
Gostaria que o formulário para exibir os campos a preencher para os dados de caso, dados de clientes e dados requerente. Existe uma maneira fácil de fazer isso para que quando ele é submetido, seria tão simples como:
case = Case.new(params[:case])
case.save
Como seria se eu estava apenas apresentar e salvar um formulário para apenas os dados caso?
Solução
Parece que você está procurando o método accepts_nested_attributes_for
de activerecord. Você precisará criar o seu formulário usando
- form.fields_for :claimant do |claimant_form|
= claimant_form.text_field :name
Você pode encontrar muito mais informações em Ryan Daigle blog
Outras dicas
Eu não acredito que há uma maneira em que você pode apenas chamar case.save e ele vai trabalhar.
Para tornar o formulário, olhar em usar fields_for. http://api.rubyonrails.org/classes/ActionView/Helpers/ FormHelper.html # M001605
fields_for permite adicionar campos que são armazenados em diferentes variáveis ??do POST, por isso, se você configurar os campos corretamente, em seguida, em seu novo método que você poderia fazer algo parecido com isto:
claimant = Claimant.new(params[:claimant])
claimant.save
O que não é muito mais complicado.
Ver o meu complexas-form-exemplos na criação de vários aninhada formas -Model. Esta foi atualizado para trabalhar com accepts_nested_attributes_for
Rails 2.3 do.
Ele permite que você aninhar as associações tudo sob params[:case]
como você quer. Quando você chama case.save
tudo o resto vai ser salvos também.