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

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

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

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

Ruby on Rails

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

Q&A

解決済

3回答

982閲覧

railsで都道府県別ユーザー一覧を表示したいです

kato0121

総合スコア10

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2019/06/18 12:59

前提・実現したいこと

Ruby on Rails でユーザー一覧画面のセレクトフォームから都道府県を選んでその都道府県に該当するユーザー一覧を表示したいです。
都道府県別ユーザー一覧に飛ぶために
/users/:pref_name/pref_name_index
といったようにparamsでpref_nameを取得したいのですが
inputの”探す”ボタンを押してselectタグのnameをどうやって取得してその都道府県別のユーザー一覧のurlに飛ばせばいいか教えていただきたいです。

該当のソースコード

#ユーザー一覧ページのコード

<div class="main users-index"> <div class="container"> <h1 class="users-heading">ユーザー一覧</h1> <div class="pref-name-form" style="padding:0 50px 20px;"> <h2>地域で探す</h2>
<select name="pref_name"> <option value="" selected>都道府県</option> <option value="北海道">北海道</option> <option value="青森県">青森県</option> <option value="岩手県">岩手県</option> <option value="宮城県">宮城県</option> <option value="秋田県">秋田県</option> <option value="山形県">山形県</option> <option value="福島県">福島県</option> <option value="茨城県">茨城県</option> <option value="栃木県">栃木県</option> <option value="群馬県">群馬県</option> <option value="埼玉県">埼玉県</option> <option value="千葉県">千葉県</option> <option value="東京都">東京都</option> <option value="神奈川県">神奈川県</option> <option value="新潟県">新潟県</option> <option value="富山県">富山県</option> <option value="石川県">石川県</option> <option value="福井県">福井県</option> <option value="山梨県">山梨県</option> <option value="長野県">長野県</option> <option value="岐阜県">岐阜県</option> <option value="静岡県">静岡県</option> <option value="愛知県">愛知県</option> <option value="三重県">三重県</option> <option value="滋賀県">滋賀県</option> <option value="京都府">京都府</option> <option value="大阪府">大阪府</option> <option value="兵庫県">兵庫県</option> <option value="奈良県">奈良県</option> <option value="和歌山県">和歌山県</option> <option value="鳥取県">鳥取県</option> <option value="島根県">島根県</option> <option value="岡山県">岡山県</option> <option value="広島県">広島県</option> <option value="山口県">山口県</option> <option value="徳島県">徳島県</option> <option value="香川県">香川県</option> <option value="愛媛県">愛媛県</option> <option value="高知県">高知県</option> <option value="福岡県">福岡県</option> <option value="佐賀県">佐賀県</option> <option value="長崎県">長崎県</option> <option value="熊本県">熊本県</option> <option value="大分県">大分県</option> <option value="宮崎県">宮崎県</option> <option value="鹿児島県">鹿児島県</option> <option value="沖縄県">沖縄県</option> </select> <input type="submit" value="探す"> </div> <% @users.each do |user| %> <div class="users-index-item"> <% if user.image %> <div class="user-left"> <img src="<%= "/user_images/#{user.image}" %>"> </div> <% else %> <div class="user-left"> <%= gravatar_for user %> </div> <% end %> <div class="user-right"> <%= link_to(user.name, "/users/#{user.id}") %> </div> </div> <% end %>
</div> </div>

#都道府県別ユーザーのコード

<div class="main users-index"> <div class="container"> <h1 class="users-heading"><%=@user.pref_name%>のユーザー一覧</h1> <% @users.each do |user| %> <div class="users-index-item"> <% if user.image %> <div class="user-left"> <img src="<%= "/user_images/#{user.image}" %>"> </div> <% else %> <div class="user-left"> <%= gravatar_for user %> </div> <% end %> <div class="user-right"> <%= link_to(user.name, "/users/#{user.id}") %> </div> </div> <% end %> </div> </div>

#"users controller"

def index
@users = User.all
end

def pref_name_index
@users = User.where(pref_name: params[:pref_name])
@user = User.find_by(pref_name: params[:pref_name])
end

#routes
get 'users/:pref_name/pref_name', to: 'users#pref_name_index'

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

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

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

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

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

guest

回答3

0

すみません、昨夜はやっぱり死んでました。
form submit でも link_to でも ご期待のURLは呼べません。
これらは何れも サーバが hrml を作るときに決定していなければならないのですが、決まるのはぶらうざー上でselectされた時ですので。

探す ボタンを押した時に「javascriptでURLを作成して飛ぶ」とするのかな。

あと、試していないですが、もしかしたら

<option value="長野県">長野県</option> の >長野県< の所の県名に linkを書いてしまうので行くか? ><a html="...">< と

投稿2019/06/20 08:36

winterboum

総合スコア23347

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

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

kato0121

2019/06/20 08:55

わざわざありがとございます!! javascriptなどでもう一度試してみようと思います!
guest

0

ベストアンサー

ああ、、、
form submit よりも link_to の方が合ってそうですね。

今日はもう死んでるので、あす。

rake routes するとズラズラでてきますから、そのなかでpref_name_indexがある行の前後5行ぐらいを載せておいて下さい

投稿2019/06/19 15:11

winterboum

総合スコア23347

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

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

kato0121

2019/06/20 07:17

signup GET /signup(.:format) users#new users_create POST /users/create(.:format) users#create POST /users/:id/update(.:format) users#update login GET /login(.:format) users#login_form GET /users/:pref_name/pref_name(.:format) users#pref_name_index GET /users/:id/likes(.:format) users#likes GET /users/:id/review_index(.:format) users#review_index GET /users/:id/review_form(.:format) users#review_form POST /users/:id/review_create(.:format) users#review_create GET /users/:id/user_contact(.:format) users#user_contact POST /users/:id/room_create(.:format) users#room_create POST /login(.:format) users#login users GET /users(.:format) users#index POST /users(.:format) users#create new_user GET /users/new(.:format) users#new edit_user GET /users/:id/edit(.:format) users#edit user GET /users/:id(.:format) users#show PATCH /users/:id(.:format) users#update PUT /users/:id(.:format) users#update DELETE /users/:id(.:format) users#destroy ご対応ありがとうございます! 宜しくお願い致します!
guest

0

<input type="submit" value="探す"> とペアになる <form> がないです。
select と submit を囲んで <from></form>を作り、その遷移先に pref_name を指定して下さい

<form> <select></select> <submit> </form>

投稿2019/06/18 19:53

winterboum

総合スコア23347

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

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

kato0121

2019/06/19 13:18

お早い対応ありがとうございます。 調べてみてもよくわからなかったのでformタグを作り自分なりにgetアクションで"/users/<%=params[:pref_name]%>/pref_name"と指定しました。 すると、例えば青森県で探したら自分の理想は ”/users/青森県/pref_name” というurlになってほしいのですが ”/usesrs//pref_name?pref_name=青森県” となって『No route matches [GET] "/usesrs/pref_name"』とルーティングエラーになってしまいます。 もし解決策がお分かりでしたらもう少しお力を貸していただきたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問