Pregunta

Estoy haciendo una sencilla aplicación de lista de tareas pendientes para enseñar a mí mismo Ruby on Rails, sin embargo, me he encontrado con un problema. Tengo una forma sencilla que las listas de tareas pendientes con una casilla de verificación a la izquierda de ellos, y un botón de "Actualizar" en la parte inferior, de modo que:

[] ¿Los platos
[] Sacar la basura
[] Tome el mundo
(Actualización)

Cada elemento de tareas pendientes es un registro separado en la base de datos con un campo booleano "completado". Quiero que el formulario para enviar una lista de identificadores de elemento activado-off a una acción en la que puedo fijar campo "completado" de cada elemento de verdad, que ocultarlos de la vista.

Yo sé cómo hacer una forma que hace referencia a varios modelos, pero no uno que hace referencia a varios registros de un mismo modelo. ¿Algún consejo?

Gracias!

¿Fue útil?

Solución

Railscasts es su amigo!

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

Es muy simple:

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

Otros consejos

Wow. Eso es un poco de tiempo. El artículo correcto antes de que esta pregunta en mi lector de RSS es la última Railscast de Ryan Bates y que parece cubrir exactamente lo que están pidiendo.

¿Por qué no utilizar una función remota para actualizar la base de datos cuando se marca un elemento, y deshacerse del botón de actualización en total?

Ya que se puede incluir el ID de cada registro al crear el formulario que se desea que el controlador de repetición de elementos en que publicas a continuación, buscar y actualizar cada uno de los registros en consecuencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top