Domanda

Sto facendo una semplice applicazione to-do list per insegnare a me stesso Ruby on Rails, ma ho incontrato un problema. Ho una forma semplice che elenca elementi attività con una casella di controllo a sinistra di loro, e un pulsante "Aggiorna" in fondo, come in:

[] lavare i piatti
[] Portare fuori la spazzatura
[] Conquistare il mondo
(Aggiornamento)

Ogni elemento to-do è un record separato nel database con un campo booleano "completato". Voglio che il modulo per presentare un elenco di ID voce controllato-off a un'azione in cui posso impostare il campo "completato" di ogni elemento per vero, che li nasconde alla vista.

So come fare un modulo che fa riferimento a più modelli, ma non uno che fa riferimento a più record dello stesso modello. Eventuali suggerimenti?

Grazie!

È stato utile?

Soluzione

Railscasts è tuo amico!

http://railscasts.com/episodes/52-update-through-checkboxes

E 'davvero semplice:

# 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 %>

Altri suggerimenti

Wow. Che è un po 'i tempi. L'articolo a destra prima di questa domanda nel mio lettore RSS è l'ultima Railscast da Ryan Bates e sembra coprire esattamente quello che stai chiedendo.

Perché non utilizzare una funzione remota per aggiornare il database quando un elemento è selezionata, e sbarazzarsi del pulsante di aggiornamento del tutto?

Dal momento che è possibile includere l'ID per ogni record quando si crea il modulo che vorrà il controller per scorrere le voci in voi messaggio, allora trovare e aggiornare ognuno di quei dischi di conseguenza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top