前提・実現したいこと
環境:AWS Cloud 9
Ruby on Rails 5.2.2
フォームで都道府県をプルダウンで選択し、その都道府県名を下記のPrefecture
という場所に表示させたいです。
発生している問題
現在フォームからプルダウンで選択した都道府県名を、上記のPrefecture
というところに表示させようとしています。
しかし、表示される文字は岩手県
という都道府県名ではなくPrefecture
という文字が出てきてしまいます。
これをどのように岩手県
という都道府県名を表示させるかを教えていただきたいです。
該当のソースコード
将来的に、都道府県名からUserを特定できるようにしたいのでUser
とPrefecture
は多対多の関係です。
下記現状のコードです。
user_prefecture_relation.rb
class UserPrefectureRelation < ApplicationRecord belongs_to :user belongs_to :prefecture end
user.rb
class User < ApplicationRecord has_many :user_prefecture_relations, dependent: :destroy has_many :prefecture, through: :user_prefecture_relations end
prefecture.rb
class Prefecture < ApplicationRecord has_many :user_prefecture_relations, dependent: :destroy has_many :users, dependent: :destroy end
下記のGemを使用
Gem 'seed_fu'
db/fixtures/prefecture.rb
Prefecture.seed(:id, { :id => 0, :name => "北海道" }, { :id => 1, :name => "青森県" }, { :id => 2, :name => "岩手県" }, { :id => 3, :name => "宮城県" }, { :id => 4, :name => "秋田県" }, { :id => 5, :name => "山形県" }, { :id => 6, :name => "福島県" }, { :id => 7, :name => "茨城県" }, { :id => 8, :name => "栃木県" }, { :id => 9, :name => "群馬県" }, { :id => 10, :name => "埼玉県" }, { :id => 11, :name => "千葉県" }, { :id => 12, :name => "東京都" }, { :id => 13, :name => "神奈川県" }, { :id => 14, :name => "新潟県" }, { :id => 15, :name => "富山県" }, { :id => 16, :name => "石川県" }, { :id => 17, :name => "福井県" }, { :id => 18, :name => "山梨県" }, { :id => 19, :name => "長野県" }, { :id => 20, :name => "岐阜県" }, { :id => 21, :name => "静岡県" }, { :id => 22, :name => "愛知県" }, { :id => 23, :name => "三重県" }, { :id => 24, :name => "滋賀県" }, { :id => 25, :name => "京都府" }, { :id => 26, :name => "大阪府" }, { :id => 27, :name => "兵庫県" }, { :id => 28, :name => "奈良県" }, { :id => 29, :name => "和歌山県" }, { :id => 30, :name => "鳥取県" }, { :id => 31, :name => "島根県" }, { :id => 32, :name => "岡山県" }, { :id => 33, :name => "広島県" }, { :id => 34, :name => "山口県" }, { :id => 35, :name => "徳島県" }, { :id => 36, :name => "香川県" }, { :id => 37, :name => "愛媛県" }, { :id => 38, :name => "高知県" }, { :id => 39, :name => "福岡県" }, { :id => 40, :name => "佐賀県" }, { :id => 41, :name => "長崎県" }, { :id => 42, :name => "熊本県" }, { :id => 43, :name => "大分県" }, { :id => 44, :name => "宮崎県" }, { :id => 45, :name => "鹿児島県" }, { :id => 46, :name => "沖縄県" } )
users_controller.rb
def update @user = User.find(params[:id]) if @user.update(user_params) flash[:success] = "転職希望者情報を更新しました" redirect_to @user else flash.now[:danger] = "転職希望者情報を更新できませんでした" render :edit end end private def user_params params.require(:user).permit(:name, :prefecture_id) end
edit.html.erb
<%= form_for(@user) do |f| %> <div class="form-group"> <%= f.label :address, "住所" %><br> <%= f.collection_select :prefecture_id, Prefecture.all, :id, :name, include_blank: '選択して下さい' %> <%= f.text_field :address, class: "form-control" %> </div> <%= f.submit '投稿', class: "btn btn-outline-primary" %> <% end %>
show.html.erb
<h2 class="card-title"><%= @user.name %> | <%= @user.age %>歳 | <%= @user.prefecture.name if @user.prefecture_id? %></h2>
試したこと
下記サイトを参考にしました。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/15 02:16