У меня есть контроллер, в котором записи пользователей сохраняются и могут быть обновлены администратором. Существует индексная страница, на которой показаны сохраненные и существующие записи, страница показа, на которой отображается отдельная запись и страница редактирования, где запись может быть обновлена. То, что я пытаюсь сделать сейчас, находится на индексной странице. Я хочу, чтобы в каждом из этих записей у каждого есть флажок, где администратор может выбрать, какие из них будут «архивироваться». На данный момент, поскольку это всего лишь случай архивирования этих записей в смысле возможности прояснить индексный вид, я не хочу иметь отдельный контроллер архива и т. Д., Но делаю это в своем диагностическом контроллере как способ очистки как я сказал, и ничего не нужно делать дальше с архивированными записями на этом этапе. Я следил за рельсами, установленными на флажках и списках, но это не сработало для меня, и я получил ошибку «Mongoid :: Errors :: DocumentNotFound». Поэтому у меня этот код все еще на мой взгляд и контроллер, но в этот момент я прокомментировал это. Я пошел по строкам создания пользовательского маршрута, но я думаю, что это может иметь ben, где возникли мои проблемы, поскольку это, похоже, не работает. Я также пытаюсь использовать TDD и Capybara для этого. Если кто-то может предложить то, что я должен делать дальше, это будет очень признательно. Я могу установить флажки и сохранить кнопку, чтобы отображаться, но с точки зрения контроллера и маршрутов, которые, кажется, попали в стену здесь!Архивирование записей с флажком и haml
индекс
%h1 Diagnostics
%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 'A Checkbox', method: :put, data: { confirm: "Are you sure?" }
/= form_tag '/admin/diagnostics/:id/complete', :method => :put do
/ = field_set_tag do
/ = check_box_tag :diagnostic_id, 'diagnostic_ids[]', method: :put, data: { confirm: "Are you sure?" }
/ = submit_tag 'Mark as Complete'
= submit_tag 'Save', method: :put, data: { confirm: "Are you sure?" }
= paginate @diagnostics
Контроллер
class Admin::DiagnosticsController < Admin::BaseController
before_filter :diagnostic, :except => [:index]
def index
@diagnostics = DiagnosticInfo.all.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.update_all(["Archive=?", Time.now], :id => params[:diagnostic_ids])
# params[:diagnostic_ids]
# # redirect_to admin_diagnostics_path
# end
private
def diagnostic
@diagnostic = DiagnosticInfo.find(params[:id])
end
end
маршруты (соответствующая часть)
resources :diagnostics
# member do
# put 'complete'
# end
# end
особенности/спецификации (соответствующая часть)
it "can archive a diagnostic report" do
diagnostic_info = FG.create(:diagnostic_info)
visit admin_diagnostics_path
page.should have_content("test message")
# save_and_open_page-launchy
click_button "Save"
check('A Checkbox')
end
Модель
class DiagnosticInfo
include Mongoid::Document
include Mongoid::Timestamps
field :data, type: Hash
field :user_id, type: Integer
field :notes, type: String
validates :data, presence: true
#archived @
index created_at: 1
def user
@user ||= User.where(auth_system_user_id: self.user_id).first
end
end
что я понимаю, что после нажатия 'save' вы хотите, чтобы пользователи завершили (Архив)', которые отмечены на индексной странице. Это правда ? –
да, это правильно. Однако пользователь является администратором. – Lilp