标签: activeadmin

Rails可以为多个设计模型提供能力类

我想知道如何定义一个能力等级并根据已登录的用户提供该能力等级.

我正在使用Active Admin,Can Can和Devise,我已成功创建了User和AdminUser模型.

我的能力就是这个.rb

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new

    if (user)
      can :manage, Item
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

现在我已经使用这个wiki条目来确定我们确实可以定义一个自定义能力文件并使用它而不是ability.rb:

https://github.com/ryanb/cancan/wiki/changing-defaults

但我想要做的是,如果登录了"非管理员用户",则能够使用ability.rb;如果登录用户管理员,则能够使用自定义能力.

问题:是否可以这样做,我不需要自定义的,我可以在一个ability.rb文件中设置权限?

ruby-on-rails devise cancan ruby-on-rails-3 activeadmin

10
推荐指数
1
解决办法
3646
查看次数

如何处理Active Admin资源中的序列化编辑字段?

我有一个模型,Domain它有一个文本字段,names.

> rails g model Domain names:text
  invoke  active_record
  create    db/migrate/20111117233221_create_domains.rb
  create    app/models/domain.rb
> rake db:migrate
==  CreateDomains: migrating ==================================================
-- create_table(:domains)
   -> 0.0015s
==  CreateDomains: migrated (0.0066s) =========================================
Run Code Online (Sandbox Code Playgroud)

我将此字段序列化为模型中的数组.

# app/models/domain.rb
class Domain < ActiveRecord::Base
  serialize :names, Array
end
Run Code Online (Sandbox Code Playgroud)

为此模型创建ActiveAdmin资源

> rails g active_admin:resource Domain
    create  app/admin/domains.rb
Run Code Online (Sandbox Code Playgroud)

然后,在app/admin/domains.rb中,我设置各种块来处理序列化字段

# app/admin/domains.rb
ActiveAdmin.register Domain do

  index do
    id_column
    column :names do |domain|
      "#{domain.names.join( ", " ) unless domain.names.nil?}"
    end
    default_actions
  end

  show do |domain|
    attributes_table …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails-3 activeadmin

10
推荐指数
1
解决办法
8776
查看次数

配置Active Admin has_many的标签

好吧,我有一个与on-to-many assoc相关的两个模型.

#models/outline.rb
    class Outline < ActiveRecord::Base
      has_many :documents
    end

#models/document.rb
    class Document < ActiveRecord::Base
      belongs_to :outline
    end

#admin/outlines.rb
    ActiveAdmin.register Outline do
      form do |f|
        f.inputs "Details" do
          f.input :name, :required => true
          f.input :pages, :required => true
          ...
          f.buttons
        end
        f.inputs "Document Versions" do 
          f.has_many :documents, :name => "Document Versions"  do |d|
            d.input :file, :as => :file
            d.buttons do
              d.commit_button :title => "Add new Document Version"
            end
          end
        end
      end
    end
Run Code Online (Sandbox Code Playgroud)

正如您在admin/outlines.rb中看到的那样,我已经尝试在has_many:documents中设置:name,在commit_button中设置:title,但这两个选项都不起作用,我也试过:legend,: title,和:label,而不是:.has_many中的名称.不工作.

这是该代码的结果: 截图

我要显示的是"文档版本"而不是"文档","添加新文档版本"而不是"添加新文档"

如果有人能有解决方案,那就太好了

ruby formbuilder formtastic ruby-on-rails-3 activeadmin

10
推荐指数
2
解决办法
8278
查看次数

活动管理员 - 为前端的特定订购创建可排序的资源

我正在尝试向Active Admin中的资源添加排序/重新排序.我了解您可以按登录时的不同列进行排序.我想要做的是能够订购商品,以便在前端按特定顺序显示.有关如何实现这一目标的任何想法?

我已经在数据库中有一个排序列.

另外,我想在管理部分中以特定顺序显示项目.

任何人对我如何实现这一点有任何想法?

sorting ruby-on-rails activeadmin

10
推荐指数
1
解决办法
5406
查看次数

如何使用多个Active Admin实例来完成单独的模型

我有2个型号:

  • 用户
  • 供应商

我想提供2个独立的Active Admin界面.他们都有设计路线:

devise_for :users, ActiveAdmin::Devise.config
devise_for :suppliers,   ActiveAdmin::Devise.config (can I somehow say ActiveAdmin2::Devise.config)
Run Code Online (Sandbox Code Playgroud)

用户可以访问产品,订单和供应商只能访问产品.

理想情况下,我想在应用程序中使用不同的文件夹并显示不同的数据.

用户/ order.rb

ActiveAdmin.register Order do
  filter :email
  filter :created_at  , :label => "Order Creation Date"
  filter :order_created
Run Code Online (Sandbox Code Playgroud)

供应商/ order.rb

ActiveAdmin.register Order do
  filter :email
Run Code Online (Sandbox Code Playgroud)

有没有办法初始化2个ActiveAdmin类并并行运行它们?

还有其他更好的方法让它在同一个网站/应用程序下工作吗?

ruby-on-rails multiple-instances devise activeadmin

10
推荐指数
1
解决办法
5597
查看次数

是否有更简单的方法使用ActiveAdmin创建/选择相关数据?

想象一下,我有以下型号:

class Translation < ActiveRecord::Base
  has_many :localizations
end

class Localization < ActiveRecord::Base
  belongs_to :translation
end
Run Code Online (Sandbox Code Playgroud)

如果我在ActiveAdmin中执行此操作:

ActiveAdmin.register Localization do
  form do |f|
    f.input :word
    f.input :content
  end 
end
Run Code Online (Sandbox Code Playgroud)

单词关联只允许我从现有单词中进行选择.但是,我希望能够动态创建一个新单词.我认为在本地化模型中接受嵌套属性可能很有用(但是,我只能选择创建Word,而不是从现有模型中选择).我怎么解决这个问题?

ruby-on-rails activeadmin

10
推荐指数
1
解决办法
741
查看次数

Rails ActiveAdmin:在同一视图中显示相关资源的表

show使用Rails的ActiveAdmin宝石荷兰国际集团的资源,我想告诉另一关联模型的表.

所以,让我们说一个Winery has_many :products.现在我想显示管理资源show页面上关联的产品Winery.而且我希望这是一个类似于我indexProducts资源的表格.

我让它工作,但只能通过手动重新创建HTML结构,哪种糟糕.是否有更index简洁的方法为关联资源的特定子集创建表格样式视图?

我有什么,有点糟糕:

show title: :name do |winery|
  attributes_table do
    row :name
    row(:region) { |o| o.region.name }
    rows :primary_contact, :description
  end

  # This is the part that sucks.
  div class: 'panel' do
    h3 'Products'
    div class: 'attributes_table' do
      table do
        tr do
          th 'Name'
          th 'Vintage'
          th 'Varietal'
        end
        winery.products.each do |product|
          tr do
            td link_to product.name, admin_product_path(product)
            td product.vintage
            td product.varietal.name
          end …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails activeadmin

10
推荐指数
1
解决办法
1万
查看次数

Heroku上的ActiveAdmin预编译错误

您好我最近将更新推送到Heroku,突然之间Active Admin将不会预编译.给我这个错误.

Running: rake assets:precompile
       rake aborted!
       SyntaxError: cannot return a value from a constructor: "this" in class DropdownMenu
       (in /tmp/build_etr05wkfpnxp/vendor/bundle/ruby/1.9.1/gems/activeadmin-0.5.1/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.cof
fee)
       /tmp/build_etr05wkfpnxp/vendor/bundle/ruby/1.9.1/gems/execjs-
1.4.0/lib/execjs/external_runtime.rb:66:in `extract_result'
Run Code Online (Sandbox Code Playgroud)

不知道发生了什么或如何解决它.它在我的本地主机上工作得非常好,只有在我推送到heroku时才会发生.它之前在Heroku上也运行良好,我所做的只是添加一个模型.

有任何想法吗?

谢谢!

固定

https://github.com/gregbell/active_admin/issues/1939

ruby-on-rails heroku activeadmin

10
推荐指数
1
解决办法
2200
查看次数

更改ActiveAdmin范围中的默认排序顺序

对于大多数模型,默认排序顺序(id desc)很好.但是对于我的一个模型上的几个范围,反转顺序或者更新updated_at字段会更有意义.

我似乎无法在不破坏其他功能的情况下实现这一点,所以我希望别人可以教我如何做到这一点!

我试过在我正在返回的对象上添加.order():

scope :example do |models|
  models.order('id asc')
end
Run Code Online (Sandbox Code Playgroud)

这似乎没有任何影响.

我也尝试过unscoping,哪种作品.它按照我想要的方式对对象进行排序,但它完全打破了所有过滤/搜索功能.

scope :example do |models|
  models.unscoped.order('id asc')
end
Run Code Online (Sandbox Code Playgroud)

该怎么办?

ruby-on-rails activeadmin

10
推荐指数
2
解决办法
6639
查看次数

单表继承主动管理模型映射问题轨道4

我创建了一个具有单表继承的多用户,这里是我的模型

# user.rb 

class User < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)

这是用户模型,所有其他模型都是从数据库中的用户继承的,它们是一个模型,用于存储两种类型的用户并保存其类型

# customer.rb

class Customer < User
end

# space_owner.rb

class SpaceOwner < User
end
Run Code Online (Sandbox Code Playgroud)

**当我在活动管理栏中映射这些时,4显示错误**

Showing /home/rabnawaz/.rvm/gems/ruby-2.3.1/bundler/gems/activeadmin-0a5a15b88bff/app/views/active_admin/resource/index.html.arb where line #2 raised:

undefined method `chain' for nil:NilClass
Extracted source (around line #709):
  def chain
    @chain ||= begin
      a = source_reflection.chain
      b = through_reflection.chain
      chain = a + b
      chain[0] = self # Use self so we don't lose the information from :source_type
Run Code Online (Sandbox Code Playgroud)

这是我在创建活动管理员文件以显示用户时遇到的错误

你能给我一个解决方案吗?

这是我用于创建多个用户的设计路线

devise_for :admin_users, ActiveAdmin::Devise.config
  ActiveAdmin.routes(self)

devise_for :customers, :controllers …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails activeadmin

10
推荐指数
1
解决办法
711
查看次数