Active Admin是一个用于在应用程序中使用管理仪表板的gem.它使用Devise登录用户并admin_user为管理员创建单独的模型.我的应用程序已经使用了设计并将其用户作为user模型.自从我开始使用活动的admin gem之后,在我的路由文件中,即使我的用户已登录,以下行仍然会解析为home #index而不是用户#spaceboard.这在以前登录用户被带到用户的时候工作得很好#dashboard作为根网址.
root :to => 'users#dashboard', :constraints => lambda {|r| r.env["warden"].authenticate? }
root :to => 'home#index'
Run Code Online (Sandbox Code Playgroud)
发生的事情是.authenticate?检查是否admin_user属于(属于Active Admin)登录或不登录我的user模型,这是我需要检查的,所以当我登录到活动管理界面时,我的站点root成为用户#dashboard而不检查是否user已登录.如何.authenticate?检查user登录信息admin_user?
任何帮助或线索将非常感谢
只是将ActiveAdmin添加到我的应用程序,我使用show/edit/destroy操作时出现问题,导致我的链接不指向ID而是指向用户名称(为了使用户更具可读性).
ActiveAdmin正确创建我的链接,如:
编辑链接:
http://localhost:3000/admin/users/paul/edit (where paul is the user name)
在那种情况下我得到:
Couldn't find User with ID=paul
当然,保罗不是id,而是用户名.
如何在我的应用程序中自定义ActiveAdmin以使用find_by_name(params [:id])来执行所有操作show/edit/delete.
在其他模型中,我得到了一个所谓的"SID",它是一个生成的盐渍ID,我也想使用find_by_sid(params [:id])以及其他模型.
非常感谢.
干杯..
我希望能够根据对象父级的属性过滤对象:
class Call < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :calls
end
Run Code Online (Sandbox Code Playgroud)
我希望能够这样做:
ActiveAdmin.register Call do
filter :user
end
Run Code Online (Sandbox Code Playgroud)
并让它过滤user.name,而不是呈现所有用户的选择.可以这样做吗?
我正在使用带有Rails(3.1.1)的ActiveAdmin(0.4.0).
我找不到一个很好的方法/ hack来处理多个嵌套资源.
考虑3个型号为:
class Program < ActiveRecord::Base
has_many :knowledges, :dependent => :destroy
end
class Knowledge < ActiveRecord::Base
belongs_to :program
has_many :steps, :dependent => :destroy
end
class Step < ActiveRecord::Base
belongs_to :knowledge
end
Run Code Online (Sandbox Code Playgroud)
和ActiveAdmin资源:
ActiveAdmin.register Program do
end
ActiveAdmin.register Knowledge do
belongs_to :program
end
ActiveAdmin.register Step do
belongs_to :knowledge
end
Run Code Online (Sandbox Code Playgroud)
在routes.rb中:
namespace :admin do
resources :programs do
resources :knowledges do
resources :steps
end
end
end
Run Code Online (Sandbox Code Playgroud)
这是程序索引,知识和步骤的URL:
http:// localhost:3000/admin/programs
http:// localhost:3000/admin/programs/1/knowledges
http:// localhost:3000 /管理员/程序/ 1 /知识/ 1 /步骤
"知识"管理员没有问题,但"步骤"管理员不保留嵌套上下文.
例如,当我在步骤#index中使用过滤器时,我被重定向到:
http:// …
我有一个Post模型,我通过ActiveAdmin访问.它也可以使用acts_as_taggable_on gem进行标记.因此,管理员可以添加,编辑或删除特定帖子中的标签.
在管理面板中为资源添加标记功能的常规方法是在admin/posts.rb中执行此操作:
ActiveAdmin.register Post do
form do |f|
f.inputs "Details", :multipart => true do
f.input :tag_list
# and the other irrelevant fields goes here
end
f.buttons
end
end
Run Code Online (Sandbox Code Playgroud)
但是,我希望从多选表单字段中选择标记,而不是在文本字段中手动输入(就像上面的代码一样).所以我试过这样做:
f.input :tag_list, :as => :select,
:multiple => :true,
:collection => ActsAsTaggableOn::Tag.all
Run Code Online (Sandbox Code Playgroud)
但它没有按预期工作.这实际上创建了带有名称的一些整数值的新标签,并将它们分配给该帖子.有人告诉我需要额外的代码才能使用.
关于如何做到这一点的任何线索?这是我的模型,以防万一:http://pastie.org/3911123
提前致谢.
ruby-on-rails acts-as-taggable-on ruby-on-rails-3 activeadmin ruby-on-rails-3.2
在一个活跃的管理员显示页面中,我有两个面板,第一个是主记录,第二个是关联信息(由has_many),所以show看起来像这样:
panel "Max Amount" do
table_for user.max_amount do
column 'Amount', :amount
column 'time', :updated_at
end
end
Run Code Online (Sandbox Code Playgroud)
我可以在金额列中对此从高到低(或从低到高)排序?
更新:我找到了演示(源https://github.com/gregbell/demo.activeadmin.info/blob/master/app/admin/users.rb这似乎已经排序),但是当你去实际演示网站它不工作.这个功能可能会破坏吗?有解决方法吗?
我有Order模型,属于User模型.
我需要通过用户电子邮件按订单创建过滤器.
我该怎么做?
如何在索引活动的admin rails中重命名按钮新文本?例如,我有一个值为"New Book"的按钮,如何将按钮中的文本更改为"New Book Adventure"
我有这样的代码:
action_item :only => :index do
config.clear_action_items!
link_to "New Book Adventure" , "/admin/books/new"
end
Run Code Online (Sandbox Code Playgroud)
但我在索引页面活动管理员中得到重复按钮?
我正在使用friendly_id我的rails 4应用程序slug.现在我使用的是active_admin gem.
问题:
当我从Group资源的活动管理员点击显示链接时,它抛出以下异常:
ActiveRecord::RecordNotFound at /admin/groups/username20-s-group-1
Run Code Online (Sandbox Code Playgroud)
我想,我需要覆盖一些active_admin默认函数?
使用Rails 4.2.1和Active Admin 1.0.0.pre2
我有一个有很多Occupancies的公寓模型.我希望管理员能够看到索引中的公寓是否与作为参数传递的日期重叠.我在Apartment上有一个方法
def available_during(start_date, end_date)
return !self.occupancies.any? { |occ| occ.date_range_overlap(Date.parse(start_date), Date.parse(end_date)) }
end
Run Code Online (Sandbox Code Playgroud)
如果公寓的任何占用与两个给定日期重叠,则返回true.该方法date_range_overlap在占用相当自我解释.我似乎无法弄清楚如何使ActiveAdmin的DSL通过该方法进行过滤,甚至可以使表格输入随机参数.
我能够在索引中放置一个显示available_during方法的布尔返回值的列.
if params[:from] && params[:until]
column "available?" do |apt|
apt.available_during(params[:from], params[:until])
end
end
Run Code Online (Sandbox Code Playgroud)
但我似乎只能通过手动输入url中的from和until params来使其工作.
我如何设置任意搜索表单以将用户发送到正确的参数?或者更好的是,在使用该方法的侧边栏中创建一个过滤器?