Rails运行方法不当

时间:2017-07-27 13:24:07

标签: ruby-on-rails-4

rails控制器定义了before_action

  before_action :set_intervento, only: [ ... ]

def set_intervento
  @intervento = Intervento.find(params[:id])
end

risultati_fatturati块中未列出我的操作only。但是正在生成错误Couldn't find Intervento with 'id'=risultati_fatturati,其中Rails证明自己必须运行set_intervento方法。还有什么工作正在启动这个方法?

修改 路线显示

  resources :interventos do
    collection do
      get :indexmio
      get :indexmio_programmati
      get :passati
      get :non_assegnati
      get :programmati
      get :domani
      get :domani_e_dopo
      get :settimana
      get :planning
      get :in_corso
      get :successivi
      get :successivo
      get :passati_da_eseguire
      get :articolo_adhoc
      get :calendar
      post :calendarc
      get :settimanale
      get  :chiusi
      post :ripresa
      get :risultati_articolos
      get :risultati_ordina_articolos
      get :creare_checklist
      post :neuter_ddt
      post :cancel_ddt
      get  :elenco_ddt
      get  :dispatcher_check
      get  :manager_list
      get  :manager_comments
      post :manager_check_required
      get  :preventivi_attivi
      get  :cerca_fatturati
      get  :non_fatturabili
      post :risultati_fatturati
      get  :cerca_chiusi
      post :risultati_chiusi
      post :duplicate_intervento
      get  :ordinari_chiusi
      get  :ordinari_aperti
    end
    member do
      get   :pdfc
      get   :create_pdf_rapporto
      get   :refresh_pause_intervento
      get   :refresh_close_intervento
      patch :update_successivo
      patch :update_ddt
      patch :materials_sucessivo
      patch :materials_availability
      patch :preventivare
      patch :esito_preventivo
      patch :scaduto_preventivo
      patch :ripristina_preventivo
      get   :dispatcher_fix
      patch :dispatcher_signature
      get   :correzione_fattura
    end
  end

翻译为

                   indexmio_interventos GET    /interventos/indexmio(.:format)                     interventos#indexmio
        indexmio_programmati_interventos GET    /interventos/indexmio_programmati(.:format)         interventos#indexmio_programmati
                     passati_interventos GET    /interventos/passati(.:format)                      interventos#passati
               non_assegnati_interventos GET    /interventos/non_assegnati(.:format)                interventos#non_assegnati
                 programmati_interventos GET    /interventos/programmati(.:format)                  interventos#programmati
                      domani_interventos GET    /interventos/domani(.:format)                       interventos#domani
               domani_e_dopo_interventos GET    /interventos/domani_e_dopo(.:format)                interventos#domani_e_dopo
                   settimana_interventos GET    /interventos/settimana(.:format)                    interventos#settimana
                    planning_interventos GET    /interventos/planning(.:format)                     interventos#planning
                    in_corso_interventos GET    /interventos/in_corso(.:format)                     interventos#in_corso
                  successivi_interventos GET    /interventos/successivi(.:format)                   interventos#successivi
                  successivo_interventos GET    /interventos/successivo(.:format)                   interventos#successivo
         passati_da_eseguire_interventos GET    /interventos/passati_da_eseguire(.:format)          interventos#passati_da_eseguire
              articolo_adhoc_interventos GET    /interventos/articolo_adhoc(.:format)               interventos#articolo_adhoc
                    calendar_interventos GET    /interventos/calendar(.:format)                     interventos#calendar
                   calendarc_interventos POST   /interventos/calendarc(.:format)                    interventos#calendarc
                 settimanale_interventos GET    /interventos/settimanale(.:format)                  interventos#settimanale
                      chiusi_interventos GET    /interventos/chiusi(.:format)                       interventos#chiusi
                     ripresa_interventos POST   /interventos/ripresa(.:format)                      interventos#ripresa
         risultati_articolos_interventos GET    /interventos/risultati_articolos(.:format)          interventos#risultati_articolos
  risultati_ordina_articolos_interventos GET    /interventos/risultati_ordina_articolos(.:format)   interventos#risultati_ordina_articolos
            creare_checklist_interventos GET    /interventos/creare_checklist(.:format)             interventos#creare_checklist
                  neuter_ddt_interventos POST   /interventos/neuter_ddt(.:format)                   interventos#neuter_ddt
                  cancel_ddt_interventos POST   /interventos/cancel_ddt(.:format)                   interventos#cancel_ddt
                  elenco_ddt_interventos GET    /interventos/elenco_ddt(.:format)                   interventos#elenco_ddt
            dispatcher_check_interventos GET    /interventos/dispatcher_check(.:format)             interventos#dispatcher_check
                manager_list_interventos GET    /interventos/manager_list(.:format)                 interventos#manager_list
            manager_comments_interventos GET    /interventos/manager_comments(.:format)             interventos#manager_comments
      manager_check_required_interventos POST   /interventos/manager_check_required(.:format)       interventos#manager_check_required
           preventivi_attivi_interventos GET    /interventos/preventivi_attivi(.:format)            interventos#preventivi_attivi
             cerca_fatturati_interventos GET    /interventos/cerca_fatturati(.:format)              interventos#cerca_fatturati
             non_fatturabili_interventos GET    /interventos/non_fatturabili(.:format)              interventos#non_fatturabili
         risultati_fatturati_interventos POST   /interventos/risultati_fatturati(.:format)          interventos#risultati_fatturati
                cerca_chiusi_interventos GET    /interventos/cerca_chiusi(.:format)                 interventos#cerca_chiusi
            risultati_chiusi_interventos POST   /interventos/risultati_chiusi(.:format)             interventos#risultati_chiusi
        duplicate_intervento_interventos POST   /interventos/duplicate_intervento(.:format)         interventos#duplicate_intervento
             ordinari_chiusi_interventos GET    /interventos/ordinari_chiusi(.:format)              interventos#ordinari_chiusi
             ordinari_aperti_interventos GET    /interventos/ordinari_aperti(.:format)              interventos#ordinari_aperti
                         pdfc_intervento GET    /interventos/:id/pdfc(.:format)                     interventos#pdfc
          create_pdf_rapporto_intervento GET    /interventos/:id/create_pdf_rapporto(.:format)      interventos#create_pdf_rapporto
     refresh_pause_intervento_intervento GET    /interventos/:id/refresh_pause_intervento(.:format) interventos#refresh_pause_intervento
     refresh_close_intervento_intervento GET    /interventos/:id/refresh_close_intervento(.:format) interventos#refresh_close_intervento
            update_successivo_intervento PATCH  /interventos/:id/update_successivo(.:format)        interventos#update_successivo
                   update_ddt_intervento PATCH  /interventos/:id/update_ddt(.:format)               interventos#update_ddt
          materials_sucessivo_intervento PATCH  /interventos/:id/materials_sucessivo(.:format)      interventos#materials_sucessivo
       materials_availability_intervento PATCH  /interventos/:id/materials_availability(.:format)   interventos#materials_availability
                 preventivare_intervento PATCH  /interventos/:id/preventivare(.:format)             interventos#preventivare
             esito_preventivo_intervento PATCH  /interventos/:id/esito_preventivo(.:format)         interventos#esito_preventivo
           scaduto_preventivo_intervento PATCH  /interventos/:id/scaduto_preventivo(.:format)       interventos#scaduto_preventivo
        ripristina_preventivo_intervento PATCH  /interventos/:id/ripristina_preventivo(.:format)    interventos#ripristina_preventivo
               dispatcher_fix_intervento GET    /interventos/:id/dispatcher_fix(.:format)           interventos#dispatcher_fix
         dispatcher_signature_intervento PATCH  /interventos/:id/dispatcher_signature(.:format)     interventos#dispatcher_signature
           correzione_fattura_intervento GET    /interventos/:id/correzione_fattura(.:format)       interventos#correzione_fattura
                             interventos GET    /interventos(.:format)                              interventos#index
                                         POST   /interventos(.:format)                              interventos#create
                          new_intervento GET    /interventos/new(.:format)                          interventos#new
                         edit_intervento GET    /interventos/:id/edit(.:format)                     interventos#edit
                              intervento GET    /interventos/:id(.:format)                          interventos#show
                                         PATCH  /interventos/:id(.:format)                          interventos#update
                                         PUT    /interventos/:id(.:format)                          interventos#update
                                         DELETE /interventos/:id(.:format)                          interventos#destroy

和控制器操作

  def risultati_fatturati
    date = params[:intervento]
    @date_start = Date.civil(date["dal(1i)"].to_i, date["dal(2i)"].to_i, date["dal(3i)"].to_i)
    @date_end   = Date.civil(date["al(1i)"].to_i, date["al(2i)"].to_i, date["al(3i)"].to_i)
    if !params[:intervento][:invoicestate_id].blank?
      @interventos = Intervento.joins(:signatures).where(['signatures.created_at >= ? AND signatures.created_at <= ? AND signatures.sequence = ? AND interventos.invoicestate_id = ?', @date_start.at_beginning_of_day, @date_end.at_end_of_day, "fine", params[:intervento][:invoicestate_id]]).paginate :page => params[:page], :per_page => 100
    else
      @interventos = Intervento.joins(:signatures).where(['signatures.created_at >= ? AND signatures.created_at <= ? AND signatures.sequence = ?', @date_start.at_beginning_of_day, @date_end.at_end_of_day, "fine"]).paginate :page => params[:page], :per_page => 100
    end
    render layout: "application"
  end

所以操作在集合中,不会调用@intervento。这就是我觉得奇怪的原因。

编辑#2

旁注:尝试删除before_action并在每个操作中找到该成员,从而产生相同的结果。因此有一个更深层次的原因。

为了尝试以不同方式查看事物并通过三角测量理解,我尝试了一个理论上更简单的过程。运行部分更新每条记录

<%= render "stato_fatturazione", intervento: intervento %>

其表单调用特定操作,该操作将调用Rails的ujs

<%= form_for stato_fatturazione_intervento_path(intervento), method: :patch, remote: true, data: {disable_with: "Aggiornando..."} do |f| %>

唉,尽管参数有适当的编辑路径,但rails试图用记录数组修补页面,根据定义,这些记录是不可修补的,并导致相同的Couldn't find Intervento with 'id'=risultati_fatturati

Started PATCH "/interventos/risultati_fatturati" for ::1 at 2017-07-31 10:52:14 +0200
Processing by InterventosController#update as JS
  Parameters: {"utf8"=>"✓", "/interventos/123/stato_fatturazione"=>{"invoicestate_id"=>"3", "in_zucchetti"=>"475", "fatturato"=>"1"}, "commit"=>"Aggiorna", "id"=>"risultati_fatturati"}

呈现的HTML确实通过某种方法拦截了目标操作:

<form data-disable-with="Aggiornando..." action="/interventos/risultati_fatturati" accept-charset="UTF-8" data-remote="true" method="post">

0 个答案:

没有答案