我有我想通過JS調用,但得到奇怪的錯誤一些簡單的動作,這裏是我的代碼:Rails的不正確行動呼籲
控制器:
class Admin::CEventsController < Admin::BaseController
def add_speaker
# speakers = session[:speakers] ? [] : session[:speakers]
# speakers << Partner.find(params[:id])
# session[:speakers] << speakers.uniq
# @speakers = Partner.find(session[:speakers])
# puts @speakers.inspect
end
def remove_speaker
# speakers = session[:speakers]
# speakers.destroy(params[:id])
# session[:speakers] = speakers
# @speakers = Partner.find(session[:speakers])
end
end
路線:
resources :c_events, :except => [:show] do
member do
post :add_speaker
post :remove_speaker
end
end
查看:
<div class="row">
<div class="small-6 columns">
<% speakers.each do |p| %>
<p><%= link_to p.name remove_speaker_admin_c_event_path(p), :method => :post, :remote => true %></p>
<% end %>
</div>
<div class="small-6 columns">
<% Partner.all.each do |p| %>
<p><%= link_to p.name, add_speaker_admin_c_event_path(p), :method => :post, :remote => true %></p>
<% end %>
</div>
</div>
我評論的一些操作的代碼只是爲了嘗試查找問題。 我得到的錯誤是:
開始POST 「/管理/ c_events/2/add_speaker」 爲127.0.0.1在 2014年1月6日21時38分25秒+0200處理由 聯繫:: CEventsController #add_speaker as JS參數:{「id」=>「2」}
CEvent加載(0.1ms)SELECT「c_events」。* FROM「c_events」WHERE 「c_events」。「id」=? LIMIT 1 [[ 「ID」, 「2」]]已完成404未在12毫秒的ActiveRecord :: RecordNotFound實測值(無法與ID = 2找到CEvent的):
好像另一個動作被稱爲,在此控制器中的另一個行動是標準CRUD欄杆交易
期望的操作看起來確實是正確調用的,正如您在日誌輸出中所證明的那樣:「Processing by Admin :: CEventsController#add_speaker'。在「Admin :: CEventsController」或「Admin :: BaseController」控制器中是否有任何'before_filter',可能試圖加載'CEvent'對象? –
它看起來像你傳遞錯誤的ID參數。 –
@Teeg我在Admin :: BaseController中有一個before_filter,但它只是設計授權(當前用戶具有管理權限)。我無法識別控制器在哪裏嘗試加載CEvent對象。以下是完整的控制器代碼http://upl.io/dx69ll – maki