accepts_nested_attributes_forでcollection_selectを使う方法
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 467
記事作成時に一緒にseed.rbであらかじめ作ったカテゴリーを選択するように実装しようとしたのですが、カテゴリーが新たに作成されてしまいます。
rails5を使用しています。
# seeds.rb
Category.create(:name => "国内")
Category.create(:name => "経済")
Category.create(:name => "エンタメ")
Category.create(:name => "スポーツ")
Category.create(:name => "IT")
Category.create(:name => "地域")
モデル
class Category < ApplicationRecord
belongs_to :article, optional: true
end
class Article < ApplicationRecord
has_one :category, dependent: :destroy
accepts_nested_attributes_for :category, allow_destroy: true
end
コントローラー
#articles_controller.rb
def new
@article = Article.new
@article.build_category
end
# GET /articles/1/edit
def edit
end
# POST /articles
# POST /articles.json
def create
@article = Article.new(article_params)
respond_to do |format|
if @article.save
format.html { redirect_to @article, notice: 'Article was successfully created.' }
format.json { render :show, status: :created, location: @article }
else
format.html { render :new }
format.json { render json: @article.errors, status: :unprocessable_entity }
end
end
end
View
#new.html.erb
<%= render 'form', article: @article, category: @category %>
#_form.html.erb
<div class="field">
<%= f.label :カテゴリー %>
<%= f.fields_for :category, @article.category do |category| %>
<%= category.collection_select(:id, Category.all, :id, :name, {prompt: "選択してください"}, {class: "form-control"}) %>
<% end %>
</div>
rute
#routes.rb
Rails.application.routes.draw do
resources :articles
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root 'articles#index'
end
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 89.99%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる