我有这些对象:
class District < ActiveRecord::Base
belongs_to :city
end
class City < ActiveRecord::Base
has_many :districts
end
Run Code Online (Sandbox Code Playgroud)
我想做的(迄今为止无法做到)是:City在District索引中有一列,该列应该是可排序的City.name.
在没有崩溃ActiveAdmin的情况下我能做的最近的事情是:
index do
column City.human_name(:count => :other), :city, :sortable => :city_id
end
Run Code Online (Sandbox Code Playgroud)
这当然不够好; 我不想对外键的整数值进行排序.
尝试过的东西:sortable => 'city.name',给出了一个错误.甚至试图像你在"纯粹的"Rails上那样做 - :joins => :cities, :sortable => 'city.name'- 没有运气.尝试了一堆其他愚蠢的东西,生气了,决定谦卑地寻求帮助.
谁能指出我正确的方向?谢谢你的时间.
在使用ActiveAdmin注册的资源中,我为模型定义了以下default_scope:
default_scope :order => 'activities.updated_at DESC'
Run Code Online (Sandbox Code Playgroud)
这显然阻止我通过单击列标题来更改资源索引页面上的排序.有没有办法保持这个默认范围,但让Active Admin排序工作?
不知道为什么我似乎无法解决这个问题,因为它似乎应该如此简单,但基本上,我正在尝试创建一个动作的链接(我希望"发布"出现在show旁边,编辑,删除)为Active Admin中的每个资源.
我在他们的维基上使用了他们建议的代码:
action_item do
link_to "button label", action_path(post)
end
Run Code Online (Sandbox Code Playgroud)
问题是,我收到错误,因为rails不知道"post"是什么.这是零.Github上的Wiki版本具有相同的代码,除了它们使用"资源"而不是帖子.我不确定他们是否暗示我会在那里使用我自己的资源名称,或者你是否应该实际使用变量"resource".我尝试了后一种情况并得到了"找不到ID"错误.
所以问题是,我在哪里设置变量名称?他们使用什么作为迭代器?
我使用Active admin,我需要上传带有大量图片的画廊.我该怎么做?我的代码:
class Gallery < ActiveRecord::Base
belongs_to :event
has_many :images
attr_accessible :name, :publish, :images, :image, :images_attributes
accepts_nested_attributes_for :images, allow_destroy: true
validates :name, presence: true
end
class Image < ActiveRecord::Base
belongs_to :gallery
attr_accessible :url
has_attached_file :url, :styles => { :medium => "300x300>", :thumb => "100x100>" }
end
ActiveAdmin.register Gallery do
form html: { multipart: true } do |f|
f.inputs do
f.input :name
f.input :images, as: :file, input_html: { multiple: true}
end
f.buttons
end
end
Run Code Online (Sandbox Code Playgroud)
我有这个错误:
Image(#70319146544460) expected, got ActionDispatch::Http::UploadedFile(#70319105893880)
Run Code Online (Sandbox Code Playgroud) 我成功安装了ActiveAdmin:
我的gemfile代码:
来源' https://rubygems.org '
gem 'rails', '3.2.10'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
gem 'twitter-bootstrap-rails'
gem 'activeadmin'
# gem "meta_search", '>= 1.1.0.pre'
gem "spud_photos"
gem 'devise' …Run Code Online (Sandbox Code Playgroud) 我有以下型号:
class Programme < ActiveRecord::Base
has_and_belongs_to_many :nationalities, class_name: 'Nation', join_table: 'nationalities_nations'
has_and_belongs_to_many :destinations, class_name: 'Nation', join_table: 'destinations_nations'
accepts_nested_attributes_for :nationalities
accepts_nested_attributes_for :destinations
end
Run Code Online (Sandbox Code Playgroud)
和
class Nation < ActiveRecord::Base
has_and_belongs_to_many :nationality_programmes, class_name: 'Programme', join_table: 'nationalities_nations'
has_and_belongs_to_many :destination_programmes, class_name: 'Programme', join_table: 'destinations_nations'
accepts_nested_attributes_for :nationality_programmes
accepts_nested_attributes_for :destination_programmes
end
Run Code Online (Sandbox Code Playgroud)
在活动管理员中,我有以下配置,可以正确地预选任何现有的存储国家/地区参考(请参见屏幕截图).
ActiveAdmin.register Programme do
permit_params :title,
destinations_ids: [:id],
nationalities_ids: [:id]
form do |f|
f.actions
f.inputs 'Countries / Regions' do
f.input :nationalities, :as => :select, :input_html => {:multiple => true}
f.input :destinations, :as => :select, :input_html => …Run Code Online (Sandbox Code Playgroud) 我们想要向我们的管理员添加帮助页面,我们正在使用活动的admin gem.此页面与任何模型都没有关联,因此我正在努力弄清楚如何让链接显示在每个页面的菜单栏中.
我正在使用ActiveAdmin和Formtastic.
我有一张发票表单,上面有一个下载菜单.
form do |f|
f.inputs "Shipment Details" do
f.input :shipment_id, :label => "Shipment", :as => :select, :collection => Shipment.find(invoiceless_shipments, :order => "file_number", :select => "id, file_number").map{|v| [v.file_number, v.id] }
f.input :issued_at, :label => "Date", :as => :datepicker
... more fields ...
end
Run Code Online (Sandbox Code Playgroud)
如果表单是新发票表单,我只想显示货件的选择菜单.
如果表单是编辑表单,我不想显示发货下拉选择菜单.因此,如果表单是编辑表单,则不会更改.
我在考虑做类似的事情
if params[:action] != 'edit'
f.input :shipment_id, :label => "Shipment", :as => :select...
end
Run Code Online (Sandbox Code Playgroud)
但我收到DSL错误.
我的团队在CI流程中使用coveralls.io为我们提供了一个rspec覆盖率分数.我们还将ActiveAdmin gem用于内部使用,并且决定不在我们的测试覆盖范围内涵盖ActiveAdmin功能.有谁知道我们如何从工作服中免除/ app/admin文件夹,以便它不会拖累我们的分数?
continuous-integration ruby-on-rails rspec-rails activeadmin
我正在尝试向ActiveAdmin添加自定义过滤器,这些过滤器最近由Ransack提供支持.不幸的是,ransacker根本没有记录,从网上的少数资源我弄乱了以下(在用户模型中):
ransacker :full_text, formatter: ->(search) {
ids = User.search_in_all_translated(search).map(&:id)
ids = ids.any? ? ids : nil
} do |parent|
parent.table[:id]
end
Run Code Online (Sandbox Code Playgroud)
该search_in_all_translated方法返回一个用户数组,该数组与所有已翻译属性中的搜索字符串匹配.
在管理页面上,定义了以下过滤器:
filter :full_text_in,
label: 'full text search',
as: :string
Run Code Online (Sandbox Code Playgroud)
过滤器本身有效,因此过滤tom将列出所有匹配的记录.但是,滤波器输入中的值切换为["tom"].
在应用过滤器之前:

应用过滤器后:

任何想法如何解决这一问题?
activeadmin ×10
formtastic ×2
activemodel ×1
paperclip ×1
ransack ×1
resources ×1
rspec-rails ×1
ruby ×1