2014-08-27 54 views
0

我在我的应用程序控制器中有一个方法。从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(); 
} 

的方法似乎从来没有看到ID从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'应所著的'数据:{ID:ID}' – IS04 2014-08-27 17:04:28

+1

你有这个路线方法。如果是这样,它不应该接受任何参数(而应该使用'params')。如果没有,你期望通过Ajax调用它吗? – 2014-08-27 17:06:05

+1

你不能直接调用helper方法。你将需要打电话给控制器的一个动作,它可以进一步调用助手方法 – RAJ 2014-08-27 17:06:12

回答

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 
相关问题