2014-11-22 27 views
0

我在rails新項目中使用了angularjs。我用rails和ruby在rails上創建了我的視圖和後端服務器。獲取「ActionView :: MissingTemplate」錯誤,當我從角度發佈json到rails控制器

現在,我已經在角部的形式,當用戶填寫表格,然後點擊發送,我發佈一個JSON像下面服務器:

$scope.jsonList = { 
     "form1": {name:"John",lastName:"Smart"}, 
     "form2": {job:"student",age:"18"} 
    }; 

我張貼此JSON在軌一test行動控制器。我把的JavaScript(angularjs)及以下的服務器端代碼:

angularController:

//Services 
    .factory('Test', function($resource){ 
     return $resource('/api/test.json', {}, { 
      create: { method: 'post'} 
     }); 
    }) 
    //Angular Controller 
    $scope.testResponse = Test.create(angular.toJson($scope.jsonList)); 

routes.rb

namespace :api, defaults: {format: :json} do 
     scope module: :v1, constraints: ApiConstraints.new(version: 1, default: :true) do 
     match '/test',to:'dropdowns#test', via: 'post' 
     end 
    end 

dropdownsController

class Api::V1::DropdownsController < Api::V1::BaseController 
    def test 

    end 
end 

我做的這一切,但是當我發佈json到rails服務器時,我收到了json,但是我得到了下面的錯誤:

Started POST "/api/test.json" for 127.0.0.1 at 2014-11-22 17:11:10 +0330 
Processing by Api::V1::DropdownsController#test as JSON 
    Parameters: {"form1"=>{"name"=>"John", "lastName"=>"Smart"}, "form2"=>{"job"=>"student", "age"=>"18"}, "dropdown"=>{"form1"=>{"name"=>"John", "lastName"=>"Smart"}, "form2"=>{"job"=>"student", "age"=>"18"}}} 
Completed 500 Internal Server Error in 1ms 

ActionView::MissingTemplate (Missing template api/v1/dropdowns/test, api/v1/base/test with {:locale=>[:en], :formats=>[:json], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in: 
    * "/Users/mgh/Documents/Maliat/sama/app/views" 
): 
    actionview (4.1.6) lib/action_view/path_set.rb:46:in `find' 
    actionview (4.1.6) lib/action_view/lookup_context.rb:124:in `find' 
    actionview (4.1.6) lib/action_view/renderer/abstract_renderer.rb:18:in `find_template' 
    actionview (4.1.6) lib/action_view/renderer/template_renderer.rb:41:in `determine_template' 

我可以做任何事情與JSON,當我在軌控制器收到(如解析,並提出在控制檯上,並保存在與其他控制器數據庫),但在控制器結束後,我得到上面的錯誤,我不能發佈對角部件的任何響應。哪裏有問題?

我該如何解決這個錯誤?

回答

1

您沒有明確呈現test方法中的任何內容,因此rails正在查找作爲響應發回的模板。但是,您的api/v1/dropdowns/文件夾中沒有json模板(我認爲它會在您的案例中查找名爲test.json的文件)。

您可以通過顯式地發回一個響應解決這個問題,(看看這個guide更多有關呈現的響應。

def test 
    render plain: "This is the response from 'test' method in DropDownsController" 
end 

,或者你想返回模型的JSON

def test 
    render json: @product 
end 

你可以在你的api/v1/dropdowns/文件夾中放置一個模板,rails會代替它,但總的來說你需要發送ba ck迴應。

例如: api/v1/dropdowns/test.json.erb

{ 
    "name" : "my name is greg or something" 
} 
相關問題