# 編集トピックエリアからカスタムフィールド値を保存しますか？

**URL:** <https://meta.discourse.org/t/save-custom-field-value-from-edit-topic-area/207069>\
**Category:** Development\
**Created:** [2021 年 10 月 25 日午後 10:53 UTC](https://meta.discourse.org/t/save-custom-field-value-from-edit-topic-area/207069 "2021-10-25T22:53:17Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![JQ331](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@JQ331](https://meta.discourse.org/u/JQ331)\
**Post date:** [2021 年 10 月 25 日午後 10:53 UTC](https://meta.discourse.org/t/save-custom-field-value-from-edit-topic-area/207069/1 "2021-10-25T22:53:17Z")

</div>

こんにちは。@angus が[こちら](https://meta.discourse.org/t/how-to-add-custom-fields-to-models/184485)で提示したコードと、[GitHub リポジトリ](https://github.com/pavilionedu/discourse-topic-custom-fields)の手順に従って、トピックのカスタムフィールドを正常に動作させることができました。ただし、コンポーザーの「ヘッダー」領域（通常、カテゴリなどを編集する場所、つまり **edit-topic コネクター** 内）で編集できるようにする部分だけが例外です。

リポジトリ内のコード、特に `plugin.rb` やその他のファイルのコードに従いました。例えば、`connectors/edit-topic/edit-topic-custom-field-container.hbs` ファイルに以下のように入力欄を追加しました（[こちら](https://github.com/pavilionedu/discourse-topic-custom-fields/blob/master/assets/javascripts/discourse/connectors/edit-topic/edit-topic-custom-field-container.hbs)を参照）。

```plaintext
{{#if isString}}
  {{input
    type="text"
    value=(readonly fieldValue)
    class="topic-custom-field-input large"
    input=(action "onChangeField" value="target.value")
    placeholder=(i18n 'topic_custom_field.placeholder' field=fieldName)
  }}
{{/if}}

```

また、[topic-custom-field-initializer](https://github.com/pavilionedu/discourse-topic-custom-fields/blob/master/assets/javascripts/discourse/initializers/topic-custom-field-initializer.js.es6) にも以下のコードを追加しました。

```plaintext
api.registerConnectorClass('edit-topic', 'edit-topic-custom-field-container', {
        setupComponent(attrs, component) {
          const model = attrs.model;
          
          let props = {
            fieldName: fieldName,
            fieldValue: model.get(fieldName)
          }
          component.setProperties(Object.assign(props, fieldInputTypes(fieldType)));
        },
        
        actions: {
          onChangeField(fieldValue) {
            this.set(`buffered.${fieldName}`, fieldValue);
          }
        }
      });

... 
  api.serializeOnCreate(fieldName);
      api.serializeToDraft(fieldName);
      api.serializeToTopic(fieldName, `topic.${fieldName}`);

```

しかし、他のリポジトリのコード（コンポーザーの値にカスタムフィールド値を追加するなど）は問題なく動作し、エラーも発生しませんが、edit-topic コネクターの入力欄に入力した値を **保存** することができません。そこに値を入力しても、編集を保存するとその値が消えてしまいます。

edit-topic コネクターで値を保存するために、他に何か必要な処理があるのでしょうか？

---

_[View the full topic](https://meta.discourse.org/t/save-custom-field-value-from-edit-topic-area/207069)._
