需求是每个“产品”有一个建立它的“广告”的按钮, 点按钮,进入的 form 页,已经填写了“产品”的一些信息,还需要再填写一些“广告”相关信息, 然后提交,将这些数据插入“广告”表。
你需要先熟悉一下 Rails 基础,然后再用 Active Admin,这样才能解决 CRUD 以外的问题。 这个功能不属于 active admin,而是 rails 的基本概念。
你可以建立一个 member_action
index do
actions default: false do |order|
raw %|
#{if order.editable?
link_to "改总价", change_price_admin_order_path(order)
end}
|
end
end
member_action :change_price, method: :get do
resource
end
# 改总价
member_action :change_total, method: :put do
resource
# do what you want to do
flash[:notice] = "改总价成功"
redirect_to admin_order_path(@order)
end
在 views/admin/orders 创建 change_price.html.erb 对应一个修改总价的操作模板,模板提交到 change_total_admin_order_path 即可。
1 产品列表添加链接 ActiveAdmin.register Product do index do ... actions do |p| link_to '加为广告', {controller: 'admin/ads', action: 'new', product_id: p.id} end end end
2 广告添加 controller.new ActiveAdmin.register Ad do controller do def new product_id = params[:product_id] @ad = Ad.new @ad.product_id = product_id end end end