0

いくつかのチュートリアルを確認しましたが、このメソッドのパラメーターに混乱しました

collection_select(object、attribute、collection、value_method、text_method、options = {}、html_options = {})

マップモデルに次のものが含まれています::area、:system、:file

そして、データベースからドロップダウンリストに:areaを読み取り、ユーザーに1つ選択させたい

私はすでに@map=Map.allをビューで実行しました

方法はどうあるべきですか?

特にパラメータ「属性」。多くのチュートリアルでは、人々はここに「id」を置きます。しかし、「id」が何であるかはわかりません。私の状況では、他の値は必要ありません。「area」だけです。

4

2 に答える 2

0

ここで何を求めているのか正確にはわかりませんが、htmlフォームで使用するためにドロップダウンを選択しようとしている場合、この例はまったく役に立ちますか?

<% nations = {'United States of America' => 'USA', 'Canada' => 'Canada', 'Mexico' => 'Mexico', 'United Kingdom'=> 'UK'} %>
<% list = nations.sort %>
<%= f.select :country, list, %>

ここで、nationsは国のハッシュであり、listはそのハッシュのソートされたコピーになります。次に、フォーム「f」の一部としてhtmlドロップダウンが作成されます。「:country」はデータが接続されているモデルの一部であり、listはドロップダウンにデータを入力するためのオプションです

于 2012-08-21T23:09:07.140 に答える
0

あなたの質問から、そのエリアに配置されているモデルが何であるかは明らかではありません。

通常、collection_selectは関連するモデル間で使用されます。

例えば。

class Category < ActiveRecord::Base
  has_many :products
end

class Product < ActiveRecord::Base
  belongs_to :category
end

製品の「カテゴリ」を選択すると、ビューは次のようになります。

<%= f.collection_select(:category_id, :id, Category.all, :name, include_blank: true) %>

これは、Category.idの値が入力される属性としてProduct.category_idを指定します。値はCategory.allコレクションから取得され、Category.nameは選択に表示される項目です。最後の(オプションの)パラメーターは、空白のエントリーを含めることを示しています。

次のようなものがおそらくあなたが必要とするものです:

<%= f.collection_select(:map_id, :id, @map, :area) %>

ただし、入力しようとしているモデルに(マップにリンクしているIDではなく)area属性がある場合は、次を使用する必要があります。

<%= f.collection_select(:area, :area, @map, :area) %>

これは、受信テーブルのarea属性に、selectの「説明」としても使用されているMapのarea属性が入力されることを指定します。

于 2012-08-22T02:37:04.953 に答える