I have been trying to implement a way to update an existing list through checkboxes. By selecting the relevant checkbox and then pressing the mark as complete button the list should update. I have followed the rails cast on this very carefully but i am still unable to get the logic to function as it should. When the checkboxes are selected and the mark as complete button is pressed the page refreshes but the list does not update.
controller:
class Admin::DiagnosticsController < Admin::BaseController
before_filter :diagnostic, :except => [:index, :complete]
def index
@diagnostics = DiagnosticInfo.all.order_by(:created_at.desc).page(params[:page]).per(50)
# @diagnostics = DiagnosticInfo.where(:completed_at => nil).order_by(:created_at.desc).page(params[:page]).per(50)
# @diagnostics = DiagnosticInfo.where(:completed_at => nil).order_by(:created_at.desc).page(params[:page]).per(50)
end
def show
respond_to do |format|
format.html
format.json { render json: @diagnostic }
end
end
def update
if @diagnostic.update_attributes(params[:diagnostic_info])
redirect_to admin_diagnostic_path, notice: 'Successfully updated.'
else
render action: "edit"
end
end
def edit
end
def destroy
diagnostic.destroy
redirect_to admin_diagnostics_path
end
def complete
DiagnosticInfo.where(params[:diagnostics_ids]).update_all(completed_at: Time.now)
redirect_to admin_diagnostics_path
# DiagnosticInfo.update_all(params[:diagnostics_ids])
# DiagnosticInfo.update_all(["completed_at=?", Time.now], :id => params[:diagnostics_ids])
end
private
def diagnostic
@diagnostic = DiagnosticInfo.find(params[:id])
end
View:
%h1 Diagnostics
= form_tag complete_admin_diagnostics_path, :method => :put do
%table
%tr
%th
%th User
%th Message
%th Device
%th RELS-Mobile Version
%th Submitted
%th Archive
- @diagnostics.each do |diagnostic|
%tr
%td
%strong= link_to 'show', admin_diagnostic_path(diagnostic)
%td
- if diagnostic.user
= link_to diagnostic.user.email, [:admin, diagnostic.user]
- else
unknown
%td
= diagnostic.data["message"]
%td
%pre= JSON.pretty_generate(diagnostic.data["device"])
%td
= diagnostic.data["appVersion"]
%td
= diagnostic.updated_at
%td
= check_box_tag "diagnostic_ids[]", diagnostic.id
= diagnostic.data
= submit_tag "Mark as complete"
= paginate @diagnostics
Aucun commentaire:
Enregistrer un commentaire