2016-02-24 66 views
0

我正在使用Rails 4.2.3。在我的“应用程序/控制器/ user_objects_controller.rb”控制器的文件,我已经定义了这个方法...尝试使Rails Ajax调用时出现ActionView :: Template :: Error错误

def find_totals 
    respond_to do |format| 
     @current_user = User.find(session["user_id"]) 
     format.json { 
     @month_total = UserObject.find_total_by_user_object_month_and_year(session["user_id"], params[:object], params[:month], params[:year]) 
     @year_total = UserObject.find_total_by_user_object_and_year(session["user_id"], params[:object], params[:year]) 
     render :json => {:month => @monthTotal, 
            :year => @yearTotal } 
     } 
    end 
    end 

我试图使用Ajax调用这个方法,所以在我的“./app/assets/ javascripts/user_objects.js.coffee“脚本,我有

updateTotal = (arg) -> 
    object = $('#user_object_object').val() 
    date = $("#datepicker").datepicker('getDate') 
    day = $('#user_object_day').val() 
    month = date.getMonth() + 1 
    year = date.getFullYear() 
    if (object != "" && day != "") 
    # Populate the month and year totals 
    $.ajax 
     url: "/user_objects/find_totals" 
     type: 'GET' 
     data: {month: month, year: year, object: object} 
     success: (data) -> 
     alert(data); 
     $('#month_total').val(data) 
     $('#year_total').val(data) 
     error: -> 
     alert "Something went wrong getting month and year total" 

但我总是得到错误条件。在我的Rails服务器中打印下面的日志:

D, [2016-02-24T15:42:24.475092 #12929] DEBUG -- : 
D, [2016-02-24T15:42:24.475206 #12929] DEBUG -- : 
D, [2016-02-24T15:42:24.475236 #12929] DEBUG -- : 
D, [2016-02-24T15:42:24.475265 #12929] DEBUG -- : 
I, [2016-02-24T15:42:24.475505 #12929] INFO -- : Started GET "/user_objects/find_totals?month=2&year=2016&object=3" for 127.0.0.1 at 2016-02-24 15:42:24 -0600 
I, [2016-02-24T15:42:24.475539 #12929] INFO -- : Started GET "/user_objects/find_totals?month=2&year=2016&object=3" for 127.0.0.1 at 2016-02-24 15:42:24 -0600 
F, [2016-02-24T15:42:24.500710 #12929] FATAL -- : 
ActionView::Template::Error (undefined method `object' for nil:NilClass): 
    2: 
    3: <p> 
    4: <strong>object:</strong> 
    5: <%= @user_object.object %> 
    6: </p> 
    7: 
    8: <p> 
    app/views/user_objects/show.html.erb:5:in `_app_views_user_objects_show_html_erb__2677150194333288712_70363943163180' 


F, [2016-02-24T15:42:24.500751 #12929] FATAL -- : 
ActionView::Template::Error (undefined method `object' for nil:NilClass): 
    2: 
    3: <p> 
    4: <strong>object:</strong> 
    5: <%= @user_object.object %> 
    6: </p> 
    7: 
    8: <p> 
    app/views/user_objects/show.html.erb:5:in `_app_views_user_objects_show_html_erb__2677150194333288712_70363943163180' 

任何人都知道这个错误的含义以及我如何解决它?

回答

0

它看起来像Rails正在努力使show.html.erb,这意味着Ajax请求被打你UserObjects控制器上的表演动作,这将是指示不正确的路线。

检查您的路线文件。路由按照指定的顺序进行匹配,因此如果在get "user_objects/find_totals" ...之前有resources :user_objects,则Rails会认为“user_objects/find_totals”URL与您的UserObjects控制器上的show动作匹配,其ID为find_totals

+0

是的,在我的routes.rb中添加一个“get:find_totals,on::collection”资源:user_objects do“部分解决了它。 – Dave

0

未定义的方法`对象”的零:NilClass

意味着@user_object这里

<%= @user_object.object %> 

为零。这是有道理的因为@user_object没有在您的控制器方法被发现在那里/动作def find_totals

您需要的地方设置实例变量在你的控制器它可用于在您的视图

0

为@ user_object是零。

未定义的方法'对象”的零:NilClass

相关问题