在 Active Admin 中为图书添加标签
Add Tags to Books in Active Admin
我在我的项目中使用 ActiveAdmin gem。
我有 2 个模型通过关联使用 has_many。本质上,我有一个 has_many 通过 Book_Mapping Table 标记的 Book 模型。
我希望能够 edit/add 从我在 Active Admin 中的图书表格中为图书添加标签。
但是我无法在我的表单中显示它。谁能帮我创建正确的 Active Admin 表单结构?
型号
class Book < ActiveRecord::Base
has_many :book_mappings
has_many :tags, through: :book_mappings
##Not sure if I should use this...
accepts_nested_attributes_for :book_mappings
accepts_nested_attributes_for :tags
end
class BookMapping < ActiveRecord::Base
belongs_to :book
belongs_to :tag
end
class Tag < ActiveRecord::Base
has_many :book_mappings
has_many :books, through: :book_mappings
end
ACTIVEADMIN
ActiveAdmin.register Book do
###Should this permit any other params?
permit_params :title
form do |f|
f.inputs "Book Detail" do
f.input :title
end
f.has_many :book_mappings do |app_f|
app_f.inputs "Book Tags" do
###Other than a Create Tag button,
###The actual form fields don't appear at all...
app_f.input :book_tag_id
end
end
end
#Show Page (Is there a way to show the selected tags here?)
show do |pic|
attributes_table do
row :title
end
end
end
我认为您可能应该注册 Book 模型而不是 CommunityResource,请添加到 permit_params tag_ids: []
。表单方法可能如下所示:
form do |f|
f.inputs "Book Detail" do
f.input :title
end
f.inputs "Tags" do
f.input :tags, as: :check_boxes
end
f.actions
end
当你想在展示页面上显示标签时,你可以在侧边栏中显示标签。
sidebar 'Tags', only: :show, if: proc { book.tags.any? } do
table_for book.tags do |t|
t.column('Name') { |tag| tag.name } # it's depends what you want to display
end
end
我在我的项目中使用 ActiveAdmin gem。
我有 2 个模型通过关联使用 has_many。本质上,我有一个 has_many 通过 Book_Mapping Table 标记的 Book 模型。
我希望能够 edit/add 从我在 Active Admin 中的图书表格中为图书添加标签。
但是我无法在我的表单中显示它。谁能帮我创建正确的 Active Admin 表单结构?
型号
class Book < ActiveRecord::Base
has_many :book_mappings
has_many :tags, through: :book_mappings
##Not sure if I should use this...
accepts_nested_attributes_for :book_mappings
accepts_nested_attributes_for :tags
end
class BookMapping < ActiveRecord::Base
belongs_to :book
belongs_to :tag
end
class Tag < ActiveRecord::Base
has_many :book_mappings
has_many :books, through: :book_mappings
end
ACTIVEADMIN
ActiveAdmin.register Book do
###Should this permit any other params?
permit_params :title
form do |f|
f.inputs "Book Detail" do
f.input :title
end
f.has_many :book_mappings do |app_f|
app_f.inputs "Book Tags" do
###Other than a Create Tag button,
###The actual form fields don't appear at all...
app_f.input :book_tag_id
end
end
end
#Show Page (Is there a way to show the selected tags here?)
show do |pic|
attributes_table do
row :title
end
end
end
我认为您可能应该注册 Book 模型而不是 CommunityResource,请添加到 permit_params tag_ids: []
。表单方法可能如下所示:
form do |f|
f.inputs "Book Detail" do
f.input :title
end
f.inputs "Tags" do
f.input :tags, as: :check_boxes
end
f.actions
end
当你想在展示页面上显示标签时,你可以在侧边栏中显示标签。
sidebar 'Tags', only: :show, if: proc { book.tags.any? } do
table_for book.tags do |t|
t.column('Name') { |tag| tag.name } # it's depends what you want to display
end
end