has_oneアソシエーションに新しく関連付けられたseo_settingを保存できませんでした

Alex Zakruzhetskyi

私は2つのモデルを持っています:

class Page < ApplicationRecord
  enum page_type: STATIC_PAGE_TYPES, _suffix: true
  has_one :seo_setting
  accepts_nested_attributes_for :seo_setting, update_only: true

  validates :title, :subtitle, length: { maximum: 50 }
  validates :page_type, uniqueness: true

  def to_param
    "#{id}-#{page_type}".parameterize
  end
end

そして

class SeoSetting < ApplicationRecord
  mount_uploader :og_image, SeoSettingsOgImageUploader
  belongs_to :page

  validates :seo_title, :seo_description, :og_title, :og_description, :og_image, presence: true
end

私のPageオブジェクトはseeds.rbファイルから作成されており、それらを編集したいときにエラーが発生します:Failed to save the new associated seo_setting.私が持っているフォームでは:

<div class="card-body">
      <%= form_for([:admin, @page]) do |f| %>
        <%= render 'shared/admin/error-messages', object: @page %>
        <div class="form-group">
          <%= f.label :title, t('admin.shared.title') %>
          <%= f.text_field :title, class: 'form-control' %>
        </div>
        <div class="form-group">
          <%= f.label :subtitle, t('admin.shared.subtitle') %>
          <%= f.text_field :subtitle, class: 'form-control' %>
        </div>
        <h3>SEO Settings</h3>
        <%= f.fields_for :seo_setting, f.object.seo_setting ||= f.object.build_seo_setting do |form| %>
          <div class="form-group">
            <%= form.label :seo_title, t('admin.shared.seo_title') %>
            <%= form.text_field :seo_title, class: 'form-control' %>
          </div>
          <div class="form-group">
            <%= form.label :seo_description, t('admin.shared.seo_description') %>
            <%= form.text_area :seo_description, class: 'form-control' %>
          </div>
          <div class="form-group">
            <%= form.label :og_title, t('admin.shared.og_title') %>
            <%= form.text_field :og_title, class: 'form-control' %>
          </div>
          <div class="form-group">
            <%= form.label :og_description, t('admin.shared.og_description') %>
            <%= form.text_area :og_description, class: 'form-control' %>
          </div>
          <div class="form-group">
            <%= form.label :og_image, t('admin.shared.og_image') %>
            <div class="row">
              <div class="col-lg-12">
                <%= image_tag(form.object.og_image.url, style: 'width: 100px') if form.object.og_image? %>
              </div>
            </div>
            <%= form.file_field :og_image %>
            <%= form.hidden_field :og_image_cache %>
          </div>
        <% end %>
        <div class="form-group">
          <%= f.submit t('admin.actions.submit'), class: 'btn btn-success' %>
          <%= link_to t('admin.actions.cancel'), admin_page_path(@page) , class: 'btn btn-default' %>
        </div>
      <% end %>
    </div>

SeoSettingモデルから検証を削除すると、すべてが機能します。Railsはこの部分が気に入らないようです:f.object.build_seo_setting、データベースにレコードを作成するためです。この問題をどのように解決できるかについてのアイデアはありますか?よろしくお願いします。

Alex Zakruzhetskyi

この行を変更する必要がありました:

<%= f.fields_for :seo_setting, f.object.seo_setting ||= f.object.build_seo_setting do |form| %>

これのために:

<%= f.fields_for :seo_setting, @page.seo_setting.nil? ? @page.build_seo_setting : @page.seo_setting do |form| %>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

新しい関連付けられた設定 has_one 関連付けを保存できませんでした

分類Dev

Rails 4-'has_one 'アソシエーションで新しいネストされたモデルを作成せずにモデルを保存することはできません

分類Dev

「ソースリフレクションクラスは:has_manyを介して関連付けられているため、関連付けを変更できません」

分類Dev

has_oneアソシエーションを作成できず、未定義のメソッドの新しいエラーをスローします

分類Dev

Lambda @ Edge-キャッシュポリシーに関連付けられているため、このAPIバージョンを使用して指定されたディストリビューションを更新することはできません

分類Dev

Visual Studioの警告:「ソリューションに関連付けられているプロパティの一部を読み取ることができませんでした」

分類Dev

タイムアウトでシグナルを待機します。シグナルが受信された場合は、実行を続行します(シグナルに関連付けられたアクションはありません)

分類Dev

JHipster 500エラー:「セッションIDを変更できません。この要求に関連付けられたセッションはありません。」

分類Dev

Has_Oneアソシエーションが作成されていません

分類Dev

関連付けられたエンティティはトランザクションで保存されません

分類Dev

プログラム 'tsc'の実行に失敗しました:この操作で指定されたファイルにアプリケーションが関連付けられていません

分類Dev

has_oneアソシエーションがbelongs_toクラスにメソッドを追加していません

分類Dev

「as」を使用したリレーションの場合、プロパティはモデルに関連付けられていません

分類Dev

has_oneアソシエーションおよびfields_forで機能しないネストされたフォーム

分類Dev

VisualBasicWordのアプリケーションに関連付けられた待機メソッドはありません

分類Dev

メソッドにアノテーションが付けられた@PostConstructは、springbootアプリケーションの起動時に起動しません

分類Dev

Wicked Gemを使用した保存/更新時にCocoon has_oneの関連付けが壊れる - Rails

分類Dev

JSON応答をGSONアノテーション付きPOJOにバインドできませんでした

分類Dev

AndroidStudioエラー。非常に多くのソリューションを試した後、それを構成することができません。PCRAM4gb

分類Dev

モデルリレーションでソースの関連付け:文字が見つかりませんでした

分類Dev

同じモデルのhas_oneアソシエーションが2つある場合、Rails5フォームは正しく保存されません

分類Dev

「has_one」であるActiveRecordポリモーフィック・アソシエーションを積極的にロードします

分類Dev

JPAは@RequestBodyアノテーションで取得したオブジェクトに関連オブジェクトを保存しません

分類Dev

Dagger2は、他のモジュールで定義された@Provideアノテーションを持つメソッドを認識できません。@providesアノテーション付きメソッドなしでは提供できません

分類Dev

すべてのクエリでハイブエラー:操作ハンドルに関連付けられたログが見つかりませんでした

分類Dev

会社のページを新しいアプリに関連付けることができませんでした

分類Dev

角度のあるアプリケーションで '関数scssエラーを見つけることができませんでした

分類Dev

@Sql失敗したSQLスクリプト:構成されたデータソース[*](「fooDS」という名前)は、トランザクションマネージャー[*](「fooTM」という名前)に関連付けられたものではありません

分類Dev

@Sql失敗したSQLスクリプト:構成されたデータソース[*](「fooDS」という名前)は、トランザクションマネージャー[*](「fooTM」という名前)に関連付けられたものではありません

Related 関連記事

  1. 1

    新しい関連付けられた設定 has_one 関連付けを保存できませんでした

  2. 2

    Rails 4-'has_one 'アソシエーションで新しいネストされたモデルを作成せずにモデルを保存することはできません

  3. 3

    「ソースリフレクションクラスは:has_manyを介して関連付けられているため、関連付けを変更できません」

  4. 4

    has_oneアソシエーションを作成できず、未定義のメソッドの新しいエラーをスローします

  5. 5

    Lambda @ Edge-キャッシュポリシーに関連付けられているため、このAPIバージョンを使用して指定されたディストリビューションを更新することはできません

  6. 6

    Visual Studioの警告:「ソリューションに関連付けられているプロパティの一部を読み取ることができませんでした」

  7. 7

    タイムアウトでシグナルを待機します。シグナルが受信された場合は、実行を続行します(シグナルに関連付けられたアクションはありません)

  8. 8

    JHipster 500エラー:「セッションIDを変更できません。この要求に関連付けられたセッションはありません。」

  9. 9

    Has_Oneアソシエーションが作成されていません

  10. 10

    関連付けられたエンティティはトランザクションで保存されません

  11. 11

    プログラム 'tsc'の実行に失敗しました:この操作で指定されたファイルにアプリケーションが関連付けられていません

  12. 12

    has_oneアソシエーションがbelongs_toクラスにメソッドを追加していません

  13. 13

    「as」を使用したリレーションの場合、プロパティはモデルに関連付けられていません

  14. 14

    has_oneアソシエーションおよびfields_forで機能しないネストされたフォーム

  15. 15

    VisualBasicWordのアプリケーションに関連付けられた待機メソッドはありません

  16. 16

    メソッドにアノテーションが付けられた@PostConstructは、springbootアプリケーションの起動時に起動しません

  17. 17

    Wicked Gemを使用した保存/更新時にCocoon has_oneの関連付けが壊れる - Rails

  18. 18

    JSON応答をGSONアノテーション付きPOJOにバインドできませんでした

  19. 19

    AndroidStudioエラー。非常に多くのソリューションを試した後、それを構成することができません。PCRAM4gb

  20. 20

    モデルリレーションでソースの関連付け:文字が見つかりませんでした

  21. 21

    同じモデルのhas_oneアソシエーションが2つある場合、Rails5フォームは正しく保存されません

  22. 22

    「has_one」であるActiveRecordポリモーフィック・アソシエーションを積極的にロードします

  23. 23

    JPAは@RequestBodyアノテーションで取得したオブジェクトに関連オブジェクトを保存しません

  24. 24

    Dagger2は、他のモジュールで定義された@Provideアノテーションを持つメソッドを認識できません。@providesアノテーション付きメソッドなしでは提供できません

  25. 25

    すべてのクエリでハイブエラー:操作ハンドルに関連付けられたログが見つかりませんでした

  26. 26

    会社のページを新しいアプリに関連付けることができませんでした

  27. 27

    角度のあるアプリケーションで '関数scssエラーを見つけることができませんでした

  28. 28

    @Sql失敗したSQLスクリプト:構成されたデータソース[*](「fooDS」という名前)は、トランザクションマネージャー[*](「fooTM」という名前)に関連付けられたものではありません

  29. 29

    @Sql失敗したSQLスクリプト:構成されたデータソース[*](「fooDS」という名前)は、トランザクションマネージャー[*](「fooTM」という名前)に関連付けられたものではありません

ホットタグ

アーカイブ