我正在使用RABL构建rails应用程序,该应用程序在由Active Admin控制的数据上生成API。它是一个非常简单的API,但我还没有太多数据,但我对Angular.js和客户端应用程序更新。使用rabl,我在2个对象上创建了一个API。到目前为止,这是我的代码;
project.rb
class Project < ActiveRecord::Base
has_attached_file :image, :styles => { :small => "100x100", :medium => "200x200", :large => "300x300" },
:url => "/system/members/:id/:style/:basename.:extension",
:path => ":rails_root/public/system/members/:id/:style/:basename.:extension"
validates_attachment :image, content_type: { content_type: ["image/jpg", "image/jpeg", "image/png"] }
end
projects_controller.rb
class ProjectsController < ApplicationController
def index
@projects = Project.all
respond_to do |format|
format.json { render }
end
end
端
视图/项目/ index.html.rabl
collection @projects
attributes :id, :title, :short_description, :long_description, :client, :image
member.rb
class Member < ActiveRecord::Base
has_one :image
has_attached_file :image, :styles => { :small => "100x100", :medium => "200x200", :large => "300x300" },
:url => "/system/members/:id/:style/:basename.:extension",
:path => ":rails_root/public/system/members/:id/:style/:basename.:extension"
validates_attachment :image, content_type: { content_type: ["image/jpg", "image/jpeg", "image/png"] }
end
members_controller.rb
class MembersController < ApplicationController
def index
@members = Member.all
respond_to do |format|
format.json { render }
end
end
end
视图/构件/ index.html.rabl
collection @members
attributes :id, :name, :title, :bio, :facebook, :twitter, :instagram, :linkedin, :dribbble, :image
角;
应用/资产/ Javascript角/ app.js
var app = angular.module("onyx", ["ngResource"]);
app.factory("Member", [ //member for the member object
"$resource", function($resource) {
return $resource("/member/:name", { //trying to just start by getting the name
name: "@name"
}, {
update: {
method: "GET"
}
});
}
]);
更新 感谢this精彩的教程,我把一切都搞定了。
答案 0 :(得分:3)
你可以使用restmod,一个非常棒的角色ORM。
“Restmod会创建可在Angular中使用的对象,以便与RESTful API进行交互。”
首先你需要安装它。在github,它得到了很好的解释。
然后,您可以定义模型。例如:
module.factory('Project', function($restmod) {
return $restmod.model('/projects');
});
然后,您可以在控制器/服务/等上注入Project模型并将其用作以下
$scope.projects = Project.$search();
在您的观点中,您可以执行以下操作:
<pre>{{projects | json }}</pre>
查看结果。
使用restmod,您可以:
答案 1 :(得分:0)
我已经制作了几个带有角度和轨道的应用程序。制作应用后,请在所有数据上生成API。一旦你这样做,Angular会处理剩下的事情。在我看来,使用gem并不是最好的,你可以通过CDN使用angular来使用rails资产管道。
我找到的最好的资源是学习如何让rails和angular一起玩得很好,这两个教程是: