Dar*_*inH 14 ruby activerecord activeadmin rails-activerecord
问题几乎说明了一切.
我有一个支持定义良好的API的现有站点.
我需要为它建立一个很好的管理界面,而且,由于我之前使用过ActiveAdmin创建效果,我很乐意在这里使用它.
但是,我找不到有关是否可以这样做的任何细节.
我读过评论说AA支持ActiveModel类型的对象,它们不一定要基于ActiveRecord,但我已经不用自己尝试了,或者找到了这样的例子.
任何人都知道这是否可能?
ben*_*ick 14
我能够通过使用ActiveAdmin自定义页面实现此目的.
在我们的例子,我们有一个叫做模型MailingList.这是一个包含一些ActiveModel功能的Ruby类.
# app/models/mailing_list.rb
class MailingList
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :name
validates_presence_of :name
def initialize(args)
# Set up instance variables
end
def self.all
# Use API to retrieve list of records
end
def save(args)
# Use API to save record
end
def id
# Unique identifier from API
end
def persisted?
false
end
end
Run Code Online (Sandbox Code Playgroud)
要在ActiveAdmin中使用此API驱动模型,我们创建一个这样的页面.
# app/admin/mailing_list.rb
ActiveAdmin.register_page 'Mailing Lists' do
action_item do
link_to 'New Mailing List', admin_mailing_lists_new_path
end
content do
redirect_to :index
end
page_action :index do
@mailing_lists = MailingList.all
render :index, :layout => 'active_admin'
end
page_action :show do
render :show, :layout => 'active_admin'
end
page_action :new do
@mailing_list = MailingList.new
render :new, :layout => 'active_admin'
end
page_action :create, :method => :post do
@mailing_list = MailingList.new(params[:mailing_list])
if @mailing_list.save
redirect_to admin_mailing_list_path(@mailing_list.id)
else
render :new, :layout => 'active_admin'
end
end
end
Run Code Online (Sandbox Code Playgroud)
这些page_action方法充当控制器动作.
为了让它按预期工作,我必须添加以下路由
# config/routes.rb
post '/admin/mailing_lists' => 'admin/mailing_lists#create'
get '/admin/mailing_lists/new' => 'admin/mailing_lists#new', :as => :admin_new_mailing_list
get '/admin/mailing_lists/:id' => 'admin/mailing_lists#show', :as => :admin_mailing_list
Run Code Online (Sandbox Code Playgroud)
你还需要一些观点
app/views/admin/mailing_lists/index.html.erb
app/views/admin/mailing_lists/show.html.erb
app/views/admin/mailing_lists/new.html.erb
| 归档时间: |
|
| 查看次数: |
2742 次 |
| 最近记录: |