選択メニューに静的オプションを渡したい場合は、それぞれのマークアップを渡すだけで、Rails に次のように補間させることができますhtml_safe
。
<%= select_tag 'Favorite Color', '<option>Blue</option><option>Red</option><option>Yellow</option>'.html_safe %>
編集:
色のオプションを動的でモデルベースにしたい場合は、おそらくいくつかの移行を作成する必要があります:
# in console
rails g model color user_id:integer name:string
rake db:migrate
# create some colors in the Rails console
rails console
Color.create(name: 'blue')
Color.create(name: 'red')
Color.create(name: 'yellow')
どのモデルに割り当てようとしているのかはわかりませんfavorite_color
が、それが のモデルであると仮定しましょうUser
。ユーザーは好きな色を 1 つしか持てないため、has_one
関係を設定します。
# app/models/user.rb
class User < ActiveRecord::Base
has_one :color
end
# app/models/color.rb
class Color < ActiveRecord::Base
belongs_to :user
end
コントローラーのアクションは次のようになります。
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save
# do something
else
# do something else
end
end
end
最後に、ビューは次のようになります。
# app/views/users/new.html.erb
<%= form_for @user do |f| %>
<!-- whatever other `user` inputs you have -->
<%= f.collection_select :color, Color.all, :id, :name %>
<%= f.submit 'Submit' %>
<% end %>