Ruby on rails 活动管理表单仅显示“”

Ruby on rails 活动管理表单仅显示“”,ruby-on-rails,ruby-on-rails-3,activerecord,rails-activerecord,activeadmin,Ruby On Rails,Ruby On Rails 3,Activerecord,Rails Activerecord,Activeadmin,我正在积极管理HABTM关系。我有两个模型:magazine.rb和keyword.rb,它们都通过联接表magazies\u keyword.rb进行关联。我想能够选择在活动管理关键字从杂志资源页 AA资源文件magages.rb如下所示: ActiveAdmin.register Magazine do menu :priority => 1 form do |f| f.semantic_errors *f.object.errors.keys f.inputs "M

我正在积极管理HABTM关系。我有两个模型:magazine.rb和keyword.rb,它们都通过联接表magazies\u keyword.rb进行关联。我想能够选择在活动管理关键字从杂志资源页

AA资源文件magages.rb如下所示:

ActiveAdmin.register Magazine do
menu :priority => 1

form do |f|
    f.semantic_errors *f.object.errors.keys
    f.inputs "Magazine Details" do
        f.input :title_id, :label => 'Title', :as => :select, :collection => Keyword.all.map{ |u| ["#{u.word.capitalize}", u.id] }
        f.input :keywords, :as => :check_boxes, :input_html => { :multiple => true } do
            f.has_many :keywords do |s|
                s.input :keyword, :collection => Keyword.all.map { |kw| ["#{kw.word.capitalize}", kw.id] }
            end
        end
    end
    f.actions
end

show do
    panel "Magazine Details" do
        attributes_table_for magazine do
            row "Keywords", :keyword do |m|
                m.keywords.map { |d| d.word }.join(", ").html_safe
            end
        end
    end
    active_admin_comments
end
表演部分起作用了。通过此设置,我还可以输入一个新的杂志,并写入联接表,但表单不显示关键字,只显示关键字。哪个是什么?该字段的活动记录地址

如何让表单为每条记录显示正确的数据条目

当我使用:

f.input :keywords, :as => :check_boxes, :input_html => { :multiple => true }, :collection => Keyword.all.map { |kw| ["#{kw.word.capitalize}", kw.id] }
将显示关键字,但联接表似乎不起作用,因为我无法读取、编辑或写入新条目或现有条目

我怎样才能让这个部件工作

更新

当我使用创建新的杂志条目时

f、 输入:关键字,:as=>:复选框

以及:

f.input :keywords, :as => :check_boxes, :input_html => { :multiple => true } do
    f.has_many :keywords do |s|
        s.input :keyword, :collection => Keyword.all.map { |kw| ["#{kw.word.capitalize}", kw.id] }
    end
end
我得到:

Started GET "/admin/magazines/new" for 127.0.0.1 at Sat Mar 03 14:21:41 +0100 2018
Processing by Admin::MagazinesController#new as HTML
  [1m[36mAdminUser Load (0.4ms)[0m  [1mSELECT 'admin_users'.* FROM 'admin_users' WHERE 'admin_users'.'id' = 1 LIMIT 1[0m
  [1m[35mKeyword Load (1.4ms)[0m  SELECT 'keywords'.* FROM 'keywords' 
  [1m[36mCACHE (0.0ms)[0m  [1mSELECT 'keywords'.* FROM 'keywords' [0m
  Rendered /Users/xxxxx/.rvm/gems/xxxxx/gems/activeadmin-0.6.0/app/views/active_admin/resource/new.html.arb (300.6ms)
Completed 200 OK in 390ms (Views: 302.4ms | ActiveRecord: 1.8ms)


Started POST "/admin/magazines" for 127.0.0.1 at Sat Mar 03 14:21:54 +0100 2018
Processing by Admin::MagazinesController#create as HTML
  Parameters: {"authenticity_token"=>"zzzzz=", "commit"=>"Create Magazine", "utf8"=>"✓", "magazine"=>{"number"=>"11", "keyword_ids"=>["", "1", "2"], "description"=>"4", "colour"=>"5", "title_id"=>"2", "cover_alt"=>"6", "short"=>"3"}}
  [1m[35mAdminUser Load (0.4ms)[0m  SELECT 'admin_users'.* FROM 'admin_users' WHERE 'admin_users'.'id' = 1 LIMIT 1
  [1m[36mKeyword Load (0.3ms)[0m  [1mSELECT 'keywords'.* FROM 'keywords' WHERE 'keywords'.'id' IN (1, 2)[0m
  [1m[35mSQL (0.1ms)[0m  BEGIN
  [1m[36mSQL (0.9ms)[0m  [1mINSERT INTO 'magazines' ('colour', 'cover_alt', 'created_at', 'description', 'number', 'short', 'title_id', 'updated_at') VALUES (?, ?, ?, ?, ?, ?, ?, ?)[0m  [["colour", "5"], ["cover_alt", "6"], ["created_at", Sat, 03 Mar 2018 13:21:54 UTC +00:00], ["description", "4"], ["number", 11], ["short", "3"], ["title_id", 2], ["updated_at", Sat, 03 Mar 2018 13:21:54 UTC +00:00]]
  [1m[35m (0.3ms)[0m  INSERT INTO 'magazines_keywords' ('magazine_id', 'keyword_id') VALUES (14, 1)
  [1m[36m (0.2ms)[0m  [1mINSERT INTO 'magazines_keywords' ('magazine_id', 'keyword_id') VALUES (14, 2)[0m
  [1m[35m (12.1ms)[0m  COMMIT
Redirected to http://localhost:3000/admin/magazines/14
Completed 302 Found in 114ms (ActiveRecord: 0.0ms)

我认为您需要使用:

f.input :keywords, as: :check_boxes, member_label: :word


尝试只保留f.input:keywords,:as=>:复选框,并删除其余包含嵌套输入的复选框谢谢您的输入。我试过了,但它输出了相同的奇怪字符串活动记录键:value???。我最终得到了一个嵌套输入,因为我认为我必须用keyword.word之类的东西来获取关键字。我被困在这里了。你在magazies.rb的许可证部分有什么?当您使用f.input:keywords,:as=>:check_box,:input\u html=>{:multiple=>true},:collection=>Keyword.all.map{{kw |[{kw.word.capitalize},kw.id]}并尝试向杂志添加一些关键字时,服务器日志中是否有一些不允许的参数?f.input:keywords,as::check_box,member\u label::wordf.input:keywords,as::复选框,成员标签:Proc.new{kw{kw.word.capitalize}
f.input :keywords, as: :check_boxes, member_label: :word
f.input :keywords, as: :check_boxes, member_label: Proc.new { |kw| kw.word.capitalize }