У меня есть несколько простых действий, которые я хочу, чтобы позвонить с помощью JS, но получил странную ошибку, вот мой код:Рельсы вызов некорректные действия
Контроллер:
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-01-06 21:38:25 +0200 Обработка Администратор :: CEventsController #add_speaker as JS Parameters: {"id" => "2"}
CEvent Load (0.1ms) ВЫБЕРИТЕ «c_events». * FROM «c_events» WHERE «c_events». «id» =? LIMIT 1 [[ "ID", "2"]] Завершена 404 Не найдено 12msActiveRecord :: RecordNotFound (Не удалось найти CEvent с идентификатором = 2):
Похоже еще действия вызывается, другие действия в этом контроллере являются стандартными CRUD-рельсами.
Желаемое действие похоже на то, что оно действительно называется правильно, о чем свидетельствует это в вашем выходном файле журнала: 'Обработка по Admin :: CEventsController # add_speaker'. Есть ли 'before_filter' в контроллерах' Admin :: CEventsController' или 'Admin :: BaseController', которые могут пытаться загрузить объект' CEvent'? –
Похоже, вы проходите неправильный параметр ID. –
@Teeg У меня есть before_filter в Admin :: BaseController, но это просто образец разрешения для разработки (у текущего пользователя есть права администратора). Я не могу определить, где контроллер пытается загрузить объект CEvent. вот полный код контроллера http://upl.io/dx69ll – maki