8 に答える
Rails のドキュメントを参照してください。とにかく、あなたのフォームで:
<%= f.collection_select :provider_id, Provider.order(:name),:id,:name, include_blank: true %>
ご想像のとおり、別のモデルで電子メール プロバイダーを事前定義Provider
して、どこから選択するかを指定する必要があります。
またはカスタムオプションの場合
<%= f.select :desired_attribute, ['option1', 'option2']%>
Contact
コントローラでコレクションを作成します-
app/controllers/contacts_controller.erb
追加する
@providers = Provider.all.by_name
モデルby_name
内ののスコープを使用して、新しいメソッド、作成メソッド、および編集メソッドに---名前による順序付けProvider
app/models/provider.rb
scope by_name order(:name)
次に、ビューで---app/views/contacts/_form.html.erb
使用します
<%= f.collection_select :provider_id, @providers, :id, :name, include_blank: true %>
Railsフォームの場合は、simple_form( https://github.com/plataformatec/simple_form )のようなフォームビルダーを確認することを強くお勧めします。
こちらをご覧ください
railsタグを使用するか、プレーンHTMLタグを使用することができます
Railsタグ
<%= select("Contact", "email_provider", Contact::PROVIDERS, {:include_blank => true}) %>
*コードの上の行はHTMLコード(HTMLタグ)になります。下にあります*
HTMLタグ
<select name="Contact[email_provider]">
<option></option>
<option>yahoo</option>
<option>gmail</option>
<option>msn</option>
</select>
あなたのモデルでは、
class Contact
self.email_providers = %w[Gmail Yahoo MSN]
validates :email_provider, :inclusion => email_providers
end
あなたのフォームでは、
<%= f.select :email_provider,
options_for_select(Contact.email_providers, @contact.email_provider) %>
options_for_select の 2 番目の引数には、現在の email_provider が選択されます。