質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

解決済

form内の入力で DBに保存されない箇所があります。原因がわかる方お願いします。

shouitirow
shouitirow

総合スコア8

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1回答

0評価

0クリップ

118閲覧

投稿2018/10/09 16:17

前提・実現したいこと

railsでwebアプリを作成中です。
住所登録form内の「都道府県」を、別のmodel(prefecture)とマイグレーションファイルを作成し関連付けを行い、一覧ページにて都道府県でタグ検索したいと考えています。
DBの関連付けは中間テーブルを用意して行いました。
modelで関連付けを行い、form内でcollection_selectで都道府県は選べるようにしましたが、都道府県はdbに保存はされていませんでした。
model,controller,formの記述を確認したのですが、原因がわからなかったため、質問させていただきます。

該当のソースコード

view

<!--フォーム--> <%= form_for @shop do |f| %> <div class="form-group row"> <%= f.label :name, '店舗名', class:'col-md-3 col-form-label' %> <%= f.text_field :name, class:'form-control' %> </div> <div class="form-group row"> <%= f.label :telephon, "電話番号",class:'col-md-3 col-form-label'%> <%= f.text_field :telephon,class:'form-control'%> </div> <div class="form-group row"> <%= f.label :seats, "席数",class:'col-md-3 col-form-label' %> <%= f.text_field :seats,class:'form-control' %> </div> <!--住所--> <fieldset class="form-group form-group-inline"> <div class="row"> <legend class="col-form-label col-md-3"> 住所 </legend> <div class="form-check form-check-inline"> <%= f.label :postcode, "郵便番号" %> <%= f.number_field :postcode %> <%= f.label :prefecture_id, "県" %> <%= f.collection_select :prefecture_ids, Prefecture.all, :id, :name, { prompt: "選択してください" } %> <%= f.label :address_city, "市" %> <%= f.text_field :address_city %> <%= f.label :address_street, "町村" %> <%= f.text_field :address_street %> <%= f.label :address_building, "建物番地" %> <%= f.text_field :address_building %> </div> </div> </fieldset> <% end %>

controller

def new @shop = Shop.new end private def shop_params params.require(:shop).permit(prefecture_ids: []) end

model

class Prefecture < ApplicationRecord has_many :shop_prefecture_relations, dependent: :delete_all has_many :shops, through: :shop_prefecture_relations end

model

class ShopPrefectureRelation < ApplicationRecord belongs_to :shop belongs_to :prefecture end

model

class Shop < ApplicationRecord has_many :shop_prefecture_relations, dependent: :delete_all has_many :prefectures, through: :shop_prefecture_relations

migrate

class CreatePrefectures < ActiveRecord::Migration[5.2] def change create_table :prefectures do |t| t.string :name, null: false t.timestamps end end end

migrate

class CreateShopPrefectureRelations < ActiveRecord::Migration[5.2] def change create_table :shop_prefecture_relations do |t| t.references :shop, foreign_key: true t.references :prefecture, foreign_key: true t.timestamps end end end

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。