0

私はここStackOverflow、 http://api.rubyonrails.org/などのRailsドキュメントで多くの投稿をチェックしています。渡す必要のあるパラメーターの数について、私は完全に混乱しています。私は4と5を見ました。これが私がやりたいことです。

国のリストを含む別のテーブルを使用してドロップダウンリストに変更したい国名のフォームがあります。

私のフォームの現在のコードは次のとおりです。

<%= f.text_field :country %>

国は別のテーブルUserにあります。人々に国を入力させる代わりに、テーブルから国を選択してもらいたいのですが、テーブルからのIDではなく国のリスト名を選択し、テーブルの国からの名前を使用してテーブルユーザーのを更新します。

私はまだ現在のデータベース用語を学んでいます。私は、データベース、データベース内のテーブル、テーブル内のレコード/行、レコードのfield.columnなどを使用することに慣れています。

collection_selectステートメントをコーディングして、別のテーブルから国名のリストを作成するにはどうすればよいですか?

私はこれを理解しようとほぼ一日中何時間も費やしてきました。どういうわけか、seeds.rbを使用してCountryテーブルをロードする方法を理解することができました。

Rails3.2.3とRuby1.9.3を使用しています。PostgreSQLデータベースを使用しています。

どんな助けでもいただければ幸いです。

4

1 に答える 1

0

他のテーブルとの適切な関係が「belongs_toやhas_manyなど」に設定されているかどうかに応じて、次のようにすることができます。

<%= collection_select(:some_other_active_record, :country, Country.all, :id, :name)  %>

次のようにレンダリングする必要があります

<select name="some_active_record[country_id]">
   <option value="1">USA</option>
   <option value="2">Canada</option>
   <option value="3">Mexico</option>
   [...]
</select>

このページを読む必要がありますhttp://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select

最初の引数は、フォームの選択タグに使用されるクラス( "Active Record / table")のインスタンスです。

2つ目は、国がメインのアクティブレコードにどのように属しているか(「country_id / contry_ids」など)など、選択タグに対応するオブジェクトの属性を取得するためのメソッド呼び出しです。

3番目の引数は、タグを表すオブジェクトの配列です。基本的にすべての国、すなわち「Country.all」

4つ目は、コレクションのメンバーで呼び出されたときに、タグを表す子オブジェクトの配列を返すメソッドの名前です。基本的に、Country.allで見つかった国インスタンスのIDであり、html value = "somecountryid"に配置されます。

次の引数は、国の名前をどのように表示するかです。

その次は、私が取り上げないオプションのセットです。

于 2012-06-01T22:55:21.700 に答える