gpt4 book ai didi

ruby-on-rails - 从 Angular 服务调用 Rails 函数

转载 作者:行者123 更新时间:2023-12-04 03:35:07 27 4
gpt4 key购买 nike

如果有一个像这样定义的简单 Rails Controller :

class ProductsController < ApplicationController

respond_to :json

def index
end

def new
end

def create
@product = Product.new(product_params)
@product.save
redirect_to @product

# this can be used if there is no view already created
# render plain: params[:products].inspect
end

def show
@product = Product.find(params[:id])
respond_with @product
end

def show_all
# @products = Product.all
# respond_with @products
respond_to do |format|
@products = Product.all

format.html
format.json { render json: @products }
end
end

private
def product_params
params.require(:product).permit(:name, :description)
end
end

我试图通过执行以下操作在我的 Angular 服务中使用它:

function HomeService($resource) {
function exposeTest() {
/*
{
'create': { method: 'POST' },
'index': { method: 'GET', isArray: true },
'show': { method: 'GET', isArray: false },
'update': { method: 'PUT' },
'destroy': { method: 'DELETE' }
}
*/
return $resource('/products/show_all', {}, {
'show_all': { method: 'GET', isArray: false }
});
}
return {
exposeTest: exposeTest
};
}

我在我的 home.controller.js 中这样调用它:

console.log('Expose Test: '+JSON.stringify(HomeService.exposeTest().show_all()));

据我了解,您可以定义一个 $resource 对象来与 Controller 交互 - 即我已经定义了一个 GET 类型的方法,可以用 show_all 调用但我得到的只是一个空对象。

我做错了什么?

谢谢

最佳答案

正如所问问题的性质一样,经过更多的挖掘和调整后,我设法解决了它。下面我将发布两种获取相同数据的方法——一种通过基本的 $http,另一种通过 $resource。首先是服务调用:

    HomeService.httpShowAll().then(function(data) {
vm.httpProducts = data;
});
HomeService.resourceShowAll().index().$promise.then(function(success) {
vm.resourceProducts = success;
});

在服务本身中:

    function httpShowAll() {
return $http.get('/products/index.json',{}).success(function(data) {});
}
function resourceShowAll() {
return $resource('/products/index.json', {} , {
index: {isArray: true}
});
}

resourceShowAll() 函数中的上述索引部分作为 Controller 调用资源对象的键。最后是 Rails Controller 索引函数:

  respond_to :json
def index
@products = Product.all
respond_to do |format|
format.json { render json: @products }
format.html
end
end

我希望这能帮助所有纯 Angular 背景的人同时使用 Angular 和 Rails。

注意:我会在完成基本 CRUD 功能后立即更新此答案:

  • 创建
  • 阅读(以上)
  • 更新
  • 删除

关于ruby-on-rails - 从 Angular 服务调用 Rails 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33647838/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com