我不明白为什么 Permit_params 不能与自定义创建操作一起使用。
例如,我们以基本的 AdminUser 资源为例。
默认情况下一切正常。我们有:
ActiveAdmin.register AdminUser do
permit_params :email, :password, :password_confirmation
form do |f|
f.inputs "Admin Details" do
f.input :email
f.input :password
f.input :password_confirmation
end
f.actions
end
end
Run Code Online (Sandbox Code Playgroud)
但是,一旦我们添加自定义创建,由于某些原因,permit_params 将不再起作用。
ActiveAdmin.register AdminUser do
permit_params :email, :password, :password_confirmation
form do |f|
f.inputs "Admin Details" do
f.input :email
f.input :password
f.input :password_confirmation
end
f.actions
end
controller do
def create
AdminUser.create(params[:admin_user])
do_some_magic_stuff_here
redirect_to backend_admin_users_path, notice: 'Custom create'
end
end
end
Run Code Online (Sandbox Code Playgroud)
我在“AdminUser.create(params[:admin_user])”行中收到错误“ActiveModel::ForbiddenAttributesError”
尝试了很多可能的解决方案,只有一个对我有用,但我真的不喜欢这个:
def create
AdminUser.create(params[:admin_user].permit(:email, :password, :password_confirmation))
do_some_magic_stuff_here
redirect_to admin_admin_users_path, …Run Code Online (Sandbox Code Playgroud) 在 Rails 应用程序中,销毁操作伴随着警告是很常见的 - “您确定要删除它吗?” 典型的代码如下所示:
link_to("Destroy", "http://www.example.com", :method => :delete, :confirm => "Are you sure?")
Run Code Online (Sandbox Code Playgroud)
ActiveAdmin 中是否有一种方法可以仅为一个模型(而不是全局)自定义确认字符串?我看到该字符串是从active_admin.delete_confirmation翻译键加载的。该字符串可以是特定于模型的吗?
某些管理员的用户需要有两个表视图,例如一个模型Bar:他们已经拥有的默认表视图和具有不同列集的附加新表视图。
设置是这样的:
\n\nActiveAdmin.register Bar do\n # \xe2\x80\xa6\n index do\n column :name\n column :phone\n column :address\n end\n # \xe2\x80\xa6\nRun Code Online (Sandbox Code Playgroud)\n\n预计就像添加另一个index块一样简单,如下所示:
ActiveAdmin.register Bar do\n # \xe2\x80\xa6\n index do\n column :name\n column :price\n column :bartender\n end\n\n index name: \'location\' do\n column :name\n column :phone\n column :city\n column :country\n end\nRun Code Online (Sandbox Code Playgroud)\n\n然后只需在某处获取附加选项卡即可。
\n\n正如您可能猜到的那样,事情并不那么简单。ActiveAdmin 现在对虚构index name:属性一无所知,只是默默地选择第一个index块,忽略第二个index块。
ActiveAdmin 文档展示了一种轻松添加第二/第三/等索引页面的方法,但类型不同:
\n\nindex as: :grid do |bar|\n link_to(image_tag(bar.photo_path), admin_bar_path(bar))\nend\nRun Code Online (Sandbox Code Playgroud)\n\n很好,但是如何添加具有不同列的索引表视图的副本? …
我在 rails 项目的 activeadmin 中遇到了一个奇怪的问题。
我创建了新的 rails 项目和两个表,如下所示。
rails g model category title:text
rails g model subcategory category:references title:text
Run Code Online (Sandbox Code Playgroud)
子类别属于具有外键“category_id”的类别,通过引用关键字。我已将类别和子类别模型更改如下。
class Category < ActiveRecord::Base
has_many :subcategories, dependent: :destroy
end
Run Code Online (Sandbox Code Playgroud)
和
class Subcategory < ActiveRecord::Base
belongs_to :category
default_scope -> { order(created_at: :desc) }
end
Run Code Online (Sandbox Code Playgroud)
我在 Gemfile 中添加了 activeadmin gem 并安装了。
ActiveAdmin.register Category do
permit_params :title
end
ActiveAdmin.register Subcategory do
permit_params :category_id, :title
end
Run Code Online (Sandbox Code Playgroud)
我登录成功。
我添加了新类别。如果我单击子类别以创建新的子类别,类别项会带来像图像这样的错误。

我想显示我添加的类别。此致。
是否可以将 font awesome 与 activeadmin 集成
我正在使用 gem 并且我已经将它添加到
Rails.application.config.assets.precompile
index do
column('Inmate') do |letter_response|
span do
link_to "E", edit_admin_inmate_path(letter_response.inmate)
#link_to fa_icon('pencil'), edit_admin_inmate_path(letter_response.inmate), :title => 'Edit'
#link_to (content_tag(:i, fa_icon('pencil'))), edit_admin_inmate_path(letter_response.inmate)
end
span do
letter_response.inmate_full_name
end
end
end
Run Code Online (Sandbox Code Playgroud)
暂时我正在使用“E”进行编辑,我已经尝试过其他人因为它没有在前端加载而被注释掉。
请建议
我正在与 Active Admin 合作。目前,我有一个索引页面,允许我查看用户标记的所有资源。鉴于存在各种类型的资源,我的 Flagg 类和各种资源表之间存在多态关系。
在我的索引页面中,在 Active Admin 上,我希望能够链接到属于特定资源类型的相应显示页面。
我已经让我所有的代码都能工作了,但我不喜欢我想出的解决方案。
我如何改进我当前的解决方案,这样我就不必写一个尴尬的条件?
楷模
class Flag < ActiveRecord::Base
#create relationships with user and flag model
belongs_to :flaggable, polymorphic: true
end
class MilitaryResource < ActiveRecord::Base
has_many :flags, as: :flaggable, :dependent => :destroy
end
class DistrictResource < ActiveRecord::Base
has_many :flags, as: :flaggable, :dependent => :destroy
end
class SchoolResource < ActiveRecord::Base
has_many :flags, as: :flaggable, :dependent => :destroy
end
Run Code Online (Sandbox Code Playgroud)
活动管理员
ActiveAdmin.register Flag do
#parameters permitted to create military resources
permit_params :id, :user_id, :flaggable_id, :flaggable_type, …Run Code Online (Sandbox Code Playgroud) ruby polymorphism ruby-on-rails polymorphic-associations activeadmin
我已将 Rails 控制器设置为使用 slugs 而不是 ids 来识别“拟合”(用于显示/编辑操作),因此我可以使用这样的 url 来访问显示页面:
http://localhost:3000/datasheets/slug-attribute-of-fiting
在routes.rb
resources :datasheets, only: [:index, :show, :edit], param: :slug
Run Code Online (Sandbox Code Playgroud)
在 datasheets_controller.rb 中
def show
fitting = Fitting.where(slug:(params[:slug])).first
pdf = DatasheetPdf.new(fitting)
send_data pdf.render, filename: "#{fitting.slug}-datasheet-#{Date.today}.pdf", type: 'application/pdf', disposition: 'inline'
end
Run Code Online (Sandbox Code Playgroud)
对于上面提到的 url 处的正常显示视图,这一切都正常工作,但是在添加 ActiveAdmin gem 时会出现问题(它会生成自己的控制器,据我所知这些控制器无法访问)。如果您尝试在活动管理仪表板中编辑“拟合”,您将被定向到http://localhost:3000/admin/fittings/slug-attribute-of-fiting/edit,它返回以下错误:
ActiveRecord::RecordNotFound in Admin::FittingsController#edit
Couldn't find Fitting with 'id'=slug-attribute-of-fiting
Run Code Online (Sandbox Code Playgroud)
鉴于我无法访问活动的管理控制器(对吗?)我如何拦截 slug 并使用它来提供 id。
谢谢
我有一个注册应用程序,它记录一个Participant模型,其中有两个悬挂模型 -Student_Detail和Volunteer_Detail. Participant has_one的Student_Detail和Volunteer_Detail。
还有第三种模式,Group. Group记录哪些参与者相互匹配。由于参与者可能涉及一个以上的Group和Group可能有不止一个Participant,我认为has_and_belongs_to_many是最佳组合Participant和Group。
一个连接表存在于Group和Participant
我是 Rails 的新手,我正在使用活动管理员来管理这个应用程序。
当我登录时,我可以看到我作为资源生成的每个模型,但我希望能够在查看Participant选项卡时显示每个参与者的相关详细信息(学生/志愿者/组)。目前,它仅显示仅适用于该特定模型的属性,而不显示任何关联模型的属性。
这是我的模型的 active_admin 资源代码Participant:
ActiveAdmin.register Participant do
permit_params :first_name, :last_name, :gender, :email, :birthdate, :phone,
:street_name, :city, :state, :zip, :role, student_details_attributes: [:nationality, :religion, :need_ride,
:has_spouse, :spouse_name, :english_level, :expectation, :length_of_stay, :exact_length, :volunteer_id,
:matched, :returned_home, :participant_id], volunteer_details_attributes: [:date, :importance, :story, …Run Code Online (Sandbox Code Playgroud) ruby-on-rails has-and-belongs-to-many activeadmin rails-activerecord
鉴于以下模型:
class WorkoutProgram < ApplicationRecord
has_many :workouts, dependent: :destroy
end
class Workout < ApplicationRecord
belongs_to :workout_program
end
Run Code Online (Sandbox Code Playgroud)
有没有办法在 ActiveAdmin has_many 输入中设置自定义顺序?我不想启用拖放,所以sortable不是一个选项。这个想法是按照编辑 .csv 文件时添加的相同顺序显示锻炼WorkoutProgram。
作为一种解决方法,我WorkoutProgram仅为此目的使用另一个 has_many 关系。所以我添加到模型中:
has_many :ordered_workouts, -> { ordered_by_id },
class_name: Workout.to_s, dependent: :destroy, inverse_of: :workout_program
Run Code Online (Sandbox Code Playgroud)
然后在 ActiveAdmin 页面中使用它,如下所示:
form.has_many :ordered_workouts, allow_destroy: true do...
Run Code Online (Sandbox Code Playgroud) 使用主动存储来存储工作正常的图像。我面临的问题是当我image_tag image显示#而不是图像时。
这是代码 products.rb
has_many_attached :photos
Run Code Online (Sandbox Code Playgroud)
在 active_admin
row "Images" do |p|
p.photos.attachments.each do |photo|
image_tag photo
end
end
Run Code Online (Sandbox Code Playgroud)
它不显示图像。它检查 byebug 网址也很好,但图像不显示,它显示了这一点
只有这个有效
row "Images" do |p|
image_tag p.photos.attachments.last
end
Run Code Online (Sandbox Code Playgroud) ruby ruby-on-rails activeadmin rails-activestorage ruby-on-rails-5.2