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

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

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

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

2回答

2991閲覧

Ruby On Rails select(選択)について

fkryu

総合スコア31

Ruby

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2017/03/30 15:02

編集2017/03/31 11:39

###前提・実現したいこと
検索でRansackというgemを使っています。
トップページに検索ボックスがあり、検索したデータを見れる一覧ページにも検索ボックスを設置しています(条件変更のイメージです)
そこでエラー等は特にないのですが、トップページの検索ボックスにselect_boxを設置していて、トップページのselect_boxで選択した値を次の一覧ページでも保持したいのですがなかなかできずにいます。

home#index.html.erb <%= search_form_for @q, url: books_path do |f| %> <%= f.search_field :name_cont %> <%= f.select :type_eq, options_for_select([['選択してください', ''], ['A','A'], ['B','B'],['C','C']], :selected => :type) %> <%= f.submit "さがす",:class => "searchbtn" %> <% end %>
books#index.html.erb <%= search_form_for @q, url: books_path do |f| %> <%= f.search_field :name_cont %> <%= f.select :type_eq, options_for_select([['選択してください', ''], ['A','A'], ['B','B'],['C','C']], :selected => :type) %> <%= f.submit "さがす",:class => "searchbtn1" %> <% end %> . . . <% @books.each do |book| %> <%= book.name %> <% end %>
books_controller.rb def index @q = Book.availables.search(params[:q]) @books = @q.result(distinct: true) end

###試したこと
いろいろ調べたりして、:selected => の部分が重要なのかなとなんとなく思っているのですが、解決できる記事もなく、投稿させていただきました。

###補足情報
・検索ボックスで入力した値を入れるDBは作っていません。。
・検索ボックス内にあるsearch_fieldの値は一覧ページの検索ボックス内でも保持されています。
home#indexがトップページで、books#indexが一覧ページになります。

どうぞ、よろしくお願いします。

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

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

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

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

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

guest

回答2

0

自己解決

<%= f.select :type_eq, ['A', 'B', 'C'] ,{include_blank: '選択してください' } %>
で解決しました!深く考えすぎていたuみたいです。。シンプルでした

投稿2017/04/05 11:38

fkryu

総合スコア31

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

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

0

ruby

1<%= f.select :type_eq, options_for_select([['選択してください', ''], ['A','A'], ['B','B'],["C","C"]]) %> 2

で動くと思います。

解説
class FormBuilder
のインスタンスf に対して
f.objectとするとfに対するactive_recordが参照できます。

投稿2017/03/31 01:46

編集2017/03/31 05:33
moke

総合スコア2241

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

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

fkryu

2017/03/31 03:21

ご回答ありがとうございます。 トップページのセレクトボックス・一覧ページのセレクトボックスのコードを変更してみましたが、トップページでAを選択しても一覧ページではAになっておらず値が保持されていませんでした。。。
moke

2017/03/31 03:54

_eqが抜けてましたね
fkryu

2017/03/31 04:34

<%= f.select :type_eq, options_for_select([['選択してください', ''], ['A'], ['B'],['C']], :selected => f.object.try(:type_eq)||'選択してください') %> で試したのですが、変わらないみたいです。。。
moke

2017/03/31 05:31

多分、表示されてないだけで、データは入っているはずです ['選択してください', '']の''を見落としていました。 むしろこうしてみてください。
fkryu

2017/03/31 08:56

なん度もすみません。。 やっぱり変わらないみたいです。。 mokaさんがおっしゃる通りデータは入ってると思うのですが。。
moke

2017/03/31 09:29

これで無理だと、やはり定石通り、controllerとviewの残りの部分とhtmlのソースを公開していただかないと…。
fkryu

2017/03/31 11:36

面倒かけてすみません。。 コードを追加しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問