我正在尝试新的Rails gem http://activeadmin.info/,它的工作效果很好!但是,我找不到任何关于如何跨关联使用它的文档.例如:
class Membership < ActiveRecord::Base
belongs_to :course
belongs_to :person
class Course < ActiveRecord::Base
has_many :memberships
has_many :people, :through => :memberships
class Person < ActiveRecord::Base
has_many :memberships
has_many :courses, :through => :memberships
Run Code Online (Sandbox Code Playgroud)
会员加入表还包括一些额外的数据(即:出勤).我正在尝试使用课程和学生名称显示成员资格 - 并允许对这些名称进行过滤/排序.据我所知,Active Admin不能跨关联工作.有没有其他人成功做到这一点,或发现另一个宝石呢?非常感谢!
我似乎无法访问partials中的实例对象.例:
在控制器我有:
ActiveAdmin.register Store do
sidebar "Aliases", :only => :edit do
@aliases = Alias.where("store_id = ?", params[:id])
render :partial => "store_aliases"
end
end
Run Code Online (Sandbox Code Playgroud)
然后在_store_aliases.html.erb部分我有:
<% @aliases.each do |alias| %>
<li><%= alias.name %></li>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这不起作用.唯一可行的(因为我在视图中放置逻辑,这是可怕的):
<% @aliases = Alias.where("store_id = ?", params[:id]) %>
<% @aliases.each do |alias| %>
<li><%= alias.name %></li>
<% end %>
Run Code Online (Sandbox Code Playgroud) 我正在尝试格式化表单,文本字段响应某些方法,而不是其他方法.
我可以这样做:
f.input :name, :input_html => { :maxlength => 10 }
f.input :name, :input_html => { :disabled => true }
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试执行以下任何操作,它们就不起作用:
f.input :name, :input_html => { :size => 10 }
f.input :name, :input_html => { :class => 'autogrow' }
f.input :name, :input_html => { :rows => 10, :cols => 10 }
Run Code Online (Sandbox Code Playgroud)
例如,当我尝试使用:size时,生成的html显示size = 10,但不会反映在实际形式中.
这些或多或少是从Github上的Formtastic文档中提取的,Activeadmin文档引用了该文档.
我有动态主动管理范围的问题.我试图在我的应用程序中为"项目"的每个"经理"创建一个范围.但是,在创建(或分配给项目)新管理器时,范围似乎不会更新,但如果我重新启动服务器,它们会更新.因此代码本身"有效",但显然不是我想要的方式.我是ruby/rails noob所以我不确定我是否需要做某些事情以某种方式"刷新"范围.
作为一个FYI,我在Heroku Cedar上使用Rails 3.2和ActiveAdmin
这是有问题的代码(有效但只在服务器重启后引入新的管理器):
Manager.find_each do |m|
scope m.first_name do |projects|
projects.where(:manager_id => m.id)
end
end
Run Code Online (Sandbox Code Playgroud)
以及整个Active Admin Project模型:
ActiveAdmin.register Project do
menu :priority => 1
index do
column :name
column :company_name
column :status
column :projection do |project|
number_to_currency project.projection
end
column :updated_at
default_actions
end
scope :all
scope :working, :default => true do |projects|
projects.where(:status => 'working')
end
Manager.find_each do |m|
scope m.first_name do |projects|
projects.where(:manager_id => m.id)
end
end
end
Run Code Online (Sandbox Code Playgroud) 我正在为一个大型生产应用程序开发ActiveAdmin应用程序.我目前正在尝试为两个activeadmin"实体"使用相同的模型.
所以,说我有
class Person < ActiveRecord::Base
scope :special, where(:is_special => true)
scope :ordinary, where(:is_special => false)
end
Run Code Online (Sandbox Code Playgroud)
我能做点什么吗
ActiveAdmin.register Person, :name => "Special People" do
# columns, filters for special people
controller do
def scoped_collection
Person.special
end
end
end
ActiveAdmin.register Person, :name => "Ordinary People" do
# columns, filters for ordinary people
controller do
def scoped_collection
Person.ordinary
end
end
end
Run Code Online (Sandbox Code Playgroud)
(我在这里编写语法来解释我想要做什么.)
这两种类型的人将显示为ActiveAdmin.register块中定义的菜单项和不同的CRUD接口.他们只有相同的底层模型.
我想在运行测试时禁用ActiveAdmin.
所以我添加require: false到Gemfile并检查if defined?(ActiveAdmin)路由和初始化程序.
但是Rails仍然会加载模型形式,app/admin因此我得到的错误类似于/app/admin/admin_user.rb:1:in':uninitialized constant ActiveAdmin(NameError)`
将app/admin目录"黑名单" 加载的最佳方法是什么?
问题是我无法从我的应用程序中删除任何内容.我删除了只留下公众,布局和管理员的观点.
<a rel="nofollow" data-method="delete" data-confirm="Are you sure you want to delete this?" href="/admin/actividades/34">Delete Actividade</a>
Run Code Online (Sandbox Code Playgroud)
应用程序/管理/ ACTIVIDADES
ActiveAdmin.register Actividade do
menu :label => "Actividades", :priority => 14
form :partial => "form"
actions :index, :show, :new, :create, :update, :edit, :destroy
index :title => "Actividades" do
column "Id", :id
column "Nome", :name
column "Grupo", :grupo
column "Actividade", :category
column "Nome da imagem", :image_file_name
column "Video", :video
column "Criado a", :created_at
column "Atualizada a", :updated_at
default_actions
end
Run Code Online (Sandbox Code Playgroud)
结束
ActiveAdmin文档说我可以像这样覆盖实用程序导航:
ActiveAdmin.setup do |config|
config.namespace :admin do |admin|
admin.build_menu :utility_navigation do |menu|
menu.add label: "ActiveAdmin.info", url: "http://www.activeadmin.info", html_options: { target: :blank }
admin.add_logout_button_to_menu menu # can also pass priority & html_options for link_to to use
end
end
end
Run Code Online (Sandbox Code Playgroud)
它还说默认显示包括当前用户的电子邮件地址.它是如何获得当前用户的电子邮件地址的?当我尝试用我替换menu.add label值时,current_admin_user会得到一个current_admin_user未定义的错误.如何从配置文件中访问有关当前登录用户的信息?ActiveAdmin在幕后如何做到这一点?
我有一个Rails 4.0.1应用程序,使用gems activeadmin 1.0.0.pre和ransack 1.1.0.
使用ActiveAdmin,我有很多这样的错误:
NoMethodError in Admin::MyModel#action
Showing [...]/views/active_admin/resource/action.html.arb where line #1 raised:
undefined method `applied_boundaries_id_eq' for #<Ransack::Search:0x0..>
Extracted source (around line #1): insert_tag renderer_for(:index)
Run Code Online (Sandbox Code Playgroud)
每个未定义的方法都有一个"_eq"模式:
aws_instance_type_clients_id_eq
user_roles_id_eq
Run Code Online (Sandbox Code Playgroud)
任何的想法 ?
我正在尝试在activeadmin中创建一个页面,用户可以进入该页面并创建新的用户帐户.
我正在使用下面的代码覆盖我的用户模型的默认创建方法.
我Couldn't find User without an ID尝试渲染new页面时收到错误.
尝试重新渲染new动作时,为什么会出现此错误?
ActiveAdmin.register User do
permit_params do
permitted = [:email, :encrypted_password]
permitted << :admin if current_user.is_admin?
permitted
end
# We're overriding the new and edit controller methods to properly create users with devise. Otherwise the passwords don't get encrypted
controller do
def create
user = User.new
user.name = params[:user][:name]
user.email = params[:user][:email]
user.admin = params[:user][:admin]
user.password = params[:user][:encrypted_password]
user.password_confirmation = params[:user][:encrypted_password]
if user.save
redirect_to admin_user_path(user)
else
flash.now[:error] …Run Code Online (Sandbox Code Playgroud) activeadmin ×10
ruby ×3
dependencies ×1
formtastic ×1
gem ×1
heroku ×1
jquery ×1
ransack ×1
rubygems ×1