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">