4

これらのサンプルモデルを持っています:

class Post < ActiveRecord::Base
  belongs_to :category
end

class Category < ActiveRecord::Base
  has_many :posts
end

新しい投稿を作成するフォームがあると想像してください。デフォルトでは、利用可能なカテゴリのリストを選択できますが、「新規/編集投稿」フォームから新しいカテゴリを作成したい場合はどうすればよいですか?

ウィンドウをポップアップして新しいカテゴリを作成する選択ボックス付きのボタンがあれば完璧です。

新しいカテゴリを作成してから新しい投稿を作成するよりも優れています。

私がいつも見たのは、has_many の関連付けを作成することですが、begins_to は作成しませんでした。

ありがとうございました

4

1 に答える 1

1

ここでいくつか質問をしていると思います。より重要なのは、通常の構築方法とは逆の方向に関連付けを作成する方法です (それが私が答える方法を知っているからです)。私はそれに焦点を当てます。

簡単にするために、フォームの一部として入力できるラベル付きの単純なテキスト フィールドを定義します。

= label_tag :new_category_name
= text_field_tag :new_category_name

コントローラーで、そのように新しいカテゴリを作成できます。

@post.build_category(name: params[:new_category_name])

@post を従来の方法で保存すると、カテゴリは投稿と同じトランザクションで作成されるため、失敗するとカテゴリは作成されません。@post.create_category代わりに何を呼び出してもカテゴリを保存したい場合。

ドキュメントは次のとおりです。 http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

Singular associations (one-to-one)otherで、モデル名に置き換えます。

私が考えるもう1つの問題は、ビューで見栄えを良くする方法です。見栄えを良くするためのオプションは確かにあります。提案どおりにポップアップを作成できます。AJAX を使用して小さな xhr リクエストを送信することもできます。派手な組み合わせの選択/テキストボックスも見ました。

于 2012-12-04T23:13:16.963 に答える