2014-08-27 2 views
0

У меня есть метод в моем контроллере приложений.Метод Application Controller, вызванный из ajax

def session_selected(id) 
    session[:selected] = [] if session[:selected].blank? 
    if session[:selected].include?(id) 
    session[:selected].delete(id) 
    else 
    session[:selected] << id 
    end 
end 

У меня есть вызов к нему из моего .js файла

function check_set(id){ 
    $.ajax({url: 'session_selected', 
    data: {id: id}, 
    method: 'get'}); 
    window.location.reload(); 
} 

Метод кажется, никогда не увидеть идентификатор приходит из Params ...

Started GET "/session_selected?id=5" for 127.0.0.1 at 2014-08-27 10:36:45 -0700 
Processing by ApplicationController#session_selected as */* 
    Parameters: {"id"=>"5"} 
Completed 500 Internal Server Error in 1ms 

ArgumentError - wrong number of arguments (0 for 1): 

Кроме того, есть ли хорошие ресурсы для этого?

+0

первую очередь 'данных: id' следует writed как' данных: {: ID} ' – IS04

+1

У вас есть маршрут к этому метод. Если это так, он не должен принимать какие-либо параметры (вместо этого следует использовать 'params'). Если нет, как вы собираетесь называть его через ajax? –

+1

Вы не можете напрямую вызвать вспомогательный метод. Вам нужно будет вызвать вызов контроллера, который может дополнительно вызвать вспомогательный метод – RAJ

ответ

0

Спасибо ребята за помощь

Контроллер Применение

def session_selected() 
    id = params[:id] 
    session[:selected] = [] if session[:selected].blank? 
    if session[:selected].include?(id) 
    session[:selected].delete(id) 
    else 
    session[:selected] << id 
    end 
end 
Смежные вопросы