Como faço para editar registros de vários de uma forma Ruby on Rails?
-
12-09-2019 - |
Pergunta
Eu estou fazendo um simples-do aplicativo de lista para me ensinar Ruby on Rails, no entanto eu correr em um problema. Eu tenho um formulário simples que listas de itens a fazer com uma caixa de seleção para a esquerda deles, e um botão "Update" na parte inferior, assim:
[] Faça os pratos
[] Leve o lixo para fora
[] Tomar o mundo
(Update)
Cada item de tarefa é um registro separado no banco de dados com um campo boolean "concluído". Eu quero o formulário para apresentar uma lista de verifiquei-off IDs de item a uma ação em que eu posso definir campo "concluída" de cada item a verdade, o que irá escondê-los da vista.
Eu sei como fazer uma forma que as referências múltiplos modelos, mas não um que referências vários registros do mesmo modelo. Alguma dica?
Obrigado!
Solução
Railscasts é seu amigo!
http://railscasts.com/episodes/52-update-through-checkboxes
É realmente simples:
# routes.rb
map.resources :tasks, :collection => { :complete => :put }
# tasks_controller.rb
def complete
Task.update_all(["completed_at=?", Time.now], :id => params[:task_ids])
end
# views\tasks\complete.html.erb
<% form_tag complete_tasks_path, :method => :put do %>
<ul>
<% for task in @incomplete_tasks %>
<li>
<%= check_box_tag "task_ids[]", task.id %>
<%= task.name %>
</li>
<% end %>
</ul>
<%= submit_tag "Mark as Complete" %>
<% end %>
Outras dicas
Wow. Isso é algum tempo. O direito item antes de esta questão no meu leitor de RSS é o mais recente railscast de Ryan Bates e ele aparece para cobrir exatamente o que você está pedindo.
Por que não usar a função remota para atualizar o banco de dados quando um item é verificado, e se livrar do botão atualizar completamente?
Uma vez que você pode incluir o ID para cada registro quando você cria seu formulário você vai querer o controlador para percorrer itens em que você postar, em seguida, localizar e atualizar cada um desses registros de acordo.