2015-11-06 87 views
1

我正在做Pro AngularJS書的教程。我沒有使用deployd,而是在後端使用rails。我試圖通過/api/v1/products加載使用JSON的產品,但是當我打印輸出結果時,響應是佈局html而不是json。Rails正在返回html而不是json

的routes.rb

resources :store, only: :index 
get '*app', to: 'store#index' 

resources :products, only: :index 
resources :sessions 

namespace :api, constraints: {format: :json}, defaults: {format: :json} do 
    namespace :v1 do 
    resources :products 
    resources :orders do 
     resources :products 
    end 
    end 
end 

products_controller.rb

class Api::V1::ProductsController < ApplicationController 

    respond_to :json 

    def index 
    @products = Product.all 

    respond_with @products 
    end 
end 

productListController.js

var plCtrl = this; 
plCtrl.data = {}; 

$http.get("/api/v1/products") 
.success(function(data){ 
    plCtrl.data.products = data; 
    console.log(plCtrl.data.products); 
}) 
.error(function(error){ 
    plCtrl.data.error = error; 
}); 

development.log

Started GET "/" for ::1 at 2015-11-08 10:16:39 -0600 
    [1m[36mActiveRecord::SchemaMigration Load (29.5ms)[0m [1mSELECT `schema_migrations`.* FROM `schema_migrations`[0m 
Processing by StoreController#index as HTML 
    Rendered store/index.html.slim within layouts/application (31.0ms) 
    Rendered layouts/_navigation_links.html.slim (2.3ms) 
    [1m[35mUser Load (0.5ms)[0m SELECT `users`.* FROM `users` WHERE `users`.`password_digest` = '$2a$10$FFHrMCASASl8cNMumUC8ZuNwTiZUmoe5i0i.jBW2./.h5iVlNxLZa' LIMIT 1 
    Rendered layouts/_navigation.html.slim (70.6ms) 
    Rendered layouts/_messages.html.slim (5.1ms) 
Completed 200 OK in 916ms (Views: 898.1ms | ActiveRecord: 17.7ms) 


Started GET "/" for ::1 at 2015-11-08 10:16:43 -0600 
Processing by StoreController#index as HTML 
    Rendered store/index.html.slim within layouts/application (0.0ms) 
    Rendered layouts/_navigation_links.html.slim (0.0ms) 
    [1m[36mUser Load (0.3ms)[0m [1mSELECT `users`.* FROM `users` WHERE `users`.`password_digest` = '$2a$10$FFHrMCASASl8cNMumUC8ZuNwTiZUmoe5i0i.jBW2./.h5iVlNxLZa' LIMIT 1[0m 
    Rendered layouts/_navigation.html.slim (2.2ms) 
    Rendered layouts/_messages.html.slim (0.0ms) 
Completed 200 OK in 120ms (Views: 119.1ms | ActiveRecord: 0.3ms) 


Started GET "/assets/users-539b1b2d248fcacaf845c897cae976a6.css?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/products-539b1b2d248fcacaf845c897cae976a6.css?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/application-8dd662d13284733bbe54eda20bb23cc6.js?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/jquery-cebd6aebb61826123f8c2609ef491120.js?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/jquery_ujs-e37afeff66df4b941f3d0e5103f67860.js?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/framework_and_overrides-59b1f67c44fcf715fcb2e3d8898788ac.css?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/stores-539b1b2d248fcacaf845c897cae976a6.css?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/application-5c74ddfe9ec142533cae4e72117a6749.css?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/angular-6e1e5cba38bc1135b8f51b46fe8b1817.js?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/angular-resource-750afd404dad9b9a65500978142d97e6.js?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/angular-ui-router-a716fee384609b743dd55ab0468bf63f.js?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/store/controllers/productListControllers-347157b211789b303302e8bcc711500b.js?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/angular-ui-router/angular-ui-router-a716fee384609b743dd55ab0468bf63f.js?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/store/app-5e5e1b9c4edcec361da040220caec84c.js?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/angular-resource/angular-resource-750afd404dad9b9a65500978142d97e6.js?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/angular/angular-6e1e5cba38bc1135b8f51b46fe8b1817.js?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/store/filters/customFilters-bfac291ac9405f569cf8cd59b6d64108.js?body=1" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/assets/store/templates/index-c54274a6b50c826831690b83850c84c1.html" for ::1 at 2015-11-08 10:16:43 -0600 


Started GET "/api/v1/products" for ::1 at 2015-11-08 10:16:43 -0600 
Processing by StoreController#index as HTML 
    Parameters: {"app"=>"api/v1/products"} 
    Rendered store/index.html.slim within layouts/application (0.0ms) 
    Rendered layouts/_navigation_links.html.slim (0.0ms) 
    [1m[35mUser Load (0.3ms)[0m SELECT `users`.* FROM `users` WHERE `users`.`password_digest` = '$2a$10$FFHrMCASASl8cNMumUC8ZuNwTiZUmoe5i0i.jBW2./.h5iVlNxLZa' LIMIT 1 
    Rendered layouts/_navigation.html.slim (2.9ms) 
    Rendered layouts/_messages.html.slim (0.1ms) 
Completed 200 OK in 154ms (Views: 153.4ms | ActiveRecord: 0.3ms) 
+0

你可以寫一個單元測試爲產品控制器確保數據在被髮送到服務器之前是json? –

+0

要回答你的問題Rails日誌是必不可少的共享。 – Anatoly

+0

哪些日誌需要分享? – mikeglaz

回答

2

你需要做這樣的事情

respond_to do |format| 
    format.json { render :json => @products } 
end 

respond_with @products

+0

再次閱讀您的問題後,我想你的問題可能是別的^^) – MMachinegun

0

日誌,而不是顯示HTML請求:

入門GET「/ api/v1/products」for :: 1於2015-11-08 10:16:43 -0600 處理由StoreController#指數爲HTML參數: { 「應用程序」=> 「API/V1 /產品」}

嘗試調用的JSON代替:

$http.get("/api/v1/products.js") 
+0

我認爲問題與我的routes.rb文件有關,因爲'/ app/v1/products'應該指向'Api :: V1 :: ProductsController#index',而不是使用'app'變量調用'StoreController#index' '/應用/ V1/products' – mikeglaz

相關問題