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

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

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

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

Ruby on Rails 6

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

Q&A

解決済

2回答

1128閲覧

DBを使用したf.collection_selectフォームにて、DBを使わない欄を入れ込みたい

fresh_fish

総合スコア20

Ruby

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

Ruby on Rails 6

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

0グッド

0クリップ

投稿2020/08/20 14:20

前提・実現したいこと

質問が非常にわかりづらくて申し訳ございません
f.collection_selectにて配列を使用したセレクトボックスを実装したのですが、配列外のバリューを使用した欄を挿入する方法がわかりません
https://railsdoc.com/page/collection_select
こちらのリファレンスを読みながら作成しました
セレクトボックスの先頭に"募集中"と表示し選択すると(value=0)が送信されれば理想です。
わかりやすいようにGithubを上げておきます
https://github.com/KantaHasegawa/FSC_app_for_devise/tree/add_cocoon
最初にも申し上げましたが非常に分かりづらい質問で申し訳ございません
もし手が空いていましたらGithubを見ていただけると助かります
よろしくおねがいします

該当のソースコード

_relationship_fields.html.erb

1<div class = "nested-fields"> 2 <%=f.label "メンバー名" %> 3 <%= f.collection_select :user_id, User.all, :id, :name %> #ここに:user_id,["募集中",0]に当たるものを入れたい 4 <%= link_to_remove_association "メンバーを削除", f ,class:"btn btn-danger btn-remove"%> 5</div>

user.rb

1class User < ApplicationRecord 2 has_many :relationships,dependent: :destroy 3 has_many :bands, through: :relationships
class Relationship < ApplicationRecord belongs_to :user, optional: true belongs_to :band

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

controllerに @collection = User.pluck(:id,:name) << [0,'募集中']としておいて、 f.collection_select :user_id, @collection, :first, :last %>

投稿2020/08/20 22:31

winterboum

総合スコア23347

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

{ id: 0, name: '募集中' }のオブジェクトを配列に追加する。
実装場所としてcontrollerのnewアクションとviewのhelperと2箇所あると思います。
理想としてはviewのhelperを用いた方がいいのではないかと思います。

Controller

1def new 2 @users = User.pluck(:name, :id).unshift(['募集中', 0]) 3end

form

1= f.select :user_id, @users

これで実装できます。
でもこの場合だとeditアクションの方にも書かないといけなくなるのでviewhelperを使用するのが堅実だと思います。

投稿2020/08/20 22:31

nasuk47

総合スコア311

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fresh_fish

2020/08/21 00:34

そんなメソッドがあったんですね... 解決できました!ありがとうございました!
nasuk47

2020/08/21 01:39

他にもたくさんあるので実装しながら少しずつ覚えていくといいと思います。 僕もまだそんなに知りません、、、 ただ同じような実装をしていたので覚えていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問