2015-04-16 3 views
0

У меня есть контроллер, в котором записи пользователей сохраняются и могут быть обновлены администратором. Существует индексная страница, на которой показаны сохраненные и существующие записи, страница показа, на которой отображается отдельная запись и страница редактирования, где запись может быть обновлена. То, что я пытаюсь сделать сейчас, находится на индексной странице. Я хочу, чтобы в каждом из этих записей у каждого есть флажок, где администратор может выбрать, какие из них будут «архивироваться». На данный момент, поскольку это всего лишь случай архивирования этих записей в смысле возможности прояснить индексный вид, я не хочу иметь отдельный контроллер архива и т. Д., Но делаю это в своем диагностическом контроллере как способ очистки как я сказал, и ничего не нужно делать дальше с архивированными записями на этом этапе. Я следил за рельсами, установленными на флажках и списках, но это не сработало для меня, и я получил ошибку «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 
+0

что я понимаю, что после нажатия 'save' вы хотите, чтобы пользователи завершили (Архив)', которые отмечены на индексной странице. Это правда ? –

+0

да, это правильно. Однако пользователь является администратором. – Lilp

ответ

0

ваш вопрос похож на this решения. вы можете попробовать это и отправить, если вы хотите, чтобы он отличался от него.

+0

Спасибо, что я видел это до того, как я опубликовал, и поскольку я не использую jQuery, хотя логика несколько схожа, я не смог найти ее полезным. Моя проблема связана с получением маршрутов для работы и привязкой кода от представления к контроллеру и т. Д. – Lilp

Смежные вопросы