Rails 5 Active Admin form не может обновить has_many Столбец по: имени - PullRequest
0 голосов
/ 13 апреля 2020

Итак, у меня есть класс Campaign с категориями has_many:

class Campaign < ApplicationRecord
  belongs_to :user
  has_many :categories
end

class Category < ApplicationRecord
  belongs_to :campaign
end

Это прекрасно работает, когда я создаю новые кампании, абсолютно без проблем:

<div class="form-group">
    <%= form.label :category %>
    <div class="col-md-12">
    <%= form.collection_select :category, Category.order(:id),:name,:name, {}, {class: 'form-control select2'}%>

    </div>

Однако ... когда я пытаюсь обновить категории обычным способом в форме Active Admin:

f.input :category, as: :select, collection: Category.select(:name)

... никаких изменений нет.

Started PATCH "/admin/campaigns/16" for ::1 at 2020-04-14 12:46:59 +0200
Processing by Admin::CampaignsController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"/7y/OwPPqntW7HJD6EDlAYTrRoMtf1cmPm5BiBfMeo7unUnxH/Hg9806QdEH0dBrDvq0MLP/MUti3+xGB/3FVw==", "campaign"=>{"user_id"=>"1", "title"=>"Title Goes Here", "description"=>"Description Goes Here", "category"=>"", "goal"=>"5000.0", "artist"=>"rainless", "start_date(1i)"=>"2020", "start_date(2i)"=>"4", "start_date(3i)"=>"1", "start_date(4i)"=>"00", "start_date(5i)"=>"00", "end_date(1i)"=>"2020", "end_date(2i)"=>"5", "end_date(3i)"=>"31", "end_date(4i)"=>"00", "end_date(5i)"=>"00"}, "commit"=>"Update Campaign", "id"=>"16"}

Как вы можете см .: "category = ''".

Если я попытаюсь:

f.input :category, as: :select, collection: Category.all

... тогда будет сохранен только идентификатор категории ... не имя.

    Started PATCH "/admin/campaigns/16" for ::1 at 2020-04-14 11:34:49 +0200
Processing by Admin::CampaignsController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"ekAns/kzS+2q/VZlXrW/M4+yB1g5bAcrCnphDLrqTH1rYdF55Q0BYTErZfexJIpZBaP166fsYUZWy8zCqtvzpA==", "campaign"=>{"user_id"=>"1", "title"=>"Candy Yams vs Choco Bliss", "description"=>"Bringing Choco-Bliss back for the first time since 2019", "category"=>"3"

Вот параметры:

 permit_params :title, :description, :category, :name, :id, :categories, :campaign_id, :artist, :goal, :type, :start_date, :end_date, :cavatar, cpics: []

Видимо, он будет обновляться только если я попытаюсь сохранить имя. Так как мне это сделать ??

...