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

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

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

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

Ruby on Rails 4

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

Q&A

解決済

2回答

2140閲覧

パラメータ取得

maonmyo

総合スコア36

Ruby

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

Ruby on Rails 4

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

0グッド

1クリップ

投稿2016/10/20 06:00

Ruby初心者です。

やりたいことは

1ルートとなるindex画面から、フォームにID番号を記入
2検索ボタンを押下
3データベースに保存されているデータを、同じindex画面に表示させる。

ですが、どのように記述してもうまくいきません。

コントローラー側で、paramsによるパラメータの取得すらできない状況に陥っています。

ルーティング↓

Ruby

1get 'user' => 'user#index'

ID記入フォーム↓

html

1<input type="text" id="user_id" name="user_id" class="input-sm form-control">

検索ボタン↓

html

1<form action""> 2 <button type="submit">検索</button> 3</form>

Controller↓

Ruby

1 2def index 3end 4 5def search 6 @user_id = params[:user_id] 7end

問題点として

検索ボタン周りの記述がわからない。

ルーティングの仕組みがイマイチ理解できていない。

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

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

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

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

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

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

guest

回答2

0

formの中にない情報はそのままじゃ送られないですが

html

1<form action="/user/index"> 2 <input type="text" id="user_id" name="user_id" class="input-sm form-control"> 3 <button type="submit">検索</button> 4</form>

投稿2016/10/20 06:05

shoota

総合スコア246

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

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

maonmyo

2016/10/20 06:49

コメントありがとうございます。 ボタン押下後、同画面に戻り URLは「localhost~~/user?user_id=1」 となりましたが コントローラーで @user_id = params[:user_id] と記述し ビューで<%= @user_id %> と記述しても、表示されません。 何故なのでしょうか。。。?
komasan1

2016/10/20 07:02

URLがuserだからじゃないですか? 「localhost~~/search?user_id=1」にアクセスすると表示されませんか?
maonmyo

2016/10/20 07:18 編集

iiieさん<< コメントありがとうございます。 同じページの中で、searchアクションを実行させたいので それだとsearchページを用意しないといけませんよね? 1、userページのindexアクションが最初に自動的に実行されます。 2、ID入力後、検索ボタン押下 3、searchアクションによりDB内のデータを取り出す 現状としては、パラメータ自体受け取れていないと感じたので、 入力したIDをparamsで受け取り@user_idに入れて、そのままビューに表示させようとしていますが、、、 pamamsで受け取って表示するだけなのにこんなに出来ないものだっけ??といった感じです。。。
guest

0

ベストアンサー

これで表示されませんか?

【controller】
def index
@user_id = params[:user_id]
end

【html】

<form action="/user/index"> <input type="text" id="user_id" name="user_id" class="input-sm form-control"> <button type="submit">検索</button> </form> <%= debug @user_id %>

投稿2016/10/20 07:20

komasan1

総合スコア257

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

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

maonmyo

2016/10/20 07:29

出ました! ありがとうございます!! 最初にアクセスしたときにindexアクションが実行されるのに、 @user_id = params[:user_id] が記述されてても問題ないんですか? てっきり、アクセス時と、その後のボタン押下時では 別のアクションを設定しないといけないものだと思っていましたが。。
komasan1

2016/10/20 07:32

よかったです^^ パラメーターがない時は、@user_idにnilが入っているはずです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問