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

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

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

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

Ruby on Rails 6

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

Q&A

解決済

1回答

266閲覧

ボタンで変数を指定することはできますでしょうか?

pure_dorayaki

総合スコア6

Ruby

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

Ruby on Rails 6

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

0グッド

0クリップ

投稿2022/11/30 02:16

前提

ボタンを押すことによって、同じコントロールのアクション内にある変数を使い分けたいです。
表示に部分ページを使っているので、変数名を変えたくないです。

実現したいこと

・マイリストボタンが押された時、自分のデータの一覧が表示される。
コントローラー#indexの@q = current_user.restaurants.ransack(params[:q])の変数が選ばれる

・他リストボタンが押された時、自分以外のデータの一覧が表示される。
コントローラー#indexの@q = Restaurant.where.not(id: current_user.id).ransack(params[:q])の変数が選ばれる

controller.rb

1 def index 2 @restaurant = Restaurant.new 3 4 if "マイリストボタン"が押されたら 5 @q = current_user.restaurants.ransack(params[:q]) 6 else "他リストボタン"が押されたら 7 @q = Restaurant.where.not(id: current_user.id).ransack(params[:q]) 8 end 9 10 @restaurants = @q.result(distinct: true) 11 @random_select = @restaurants.shuffle.first 12 end

html.erb

1 <div class="navbar-end"> 2 <button value="マイリスト", onclick='/_restaurants.html.erb', > 3 <button value="他リスト", > 4 </div> 5</div>

試したこと

データベースをいじりたい訳ではないので、paramsで送るデータで操作を分けることはできないと分かりました。paramsを使う以外で判別できるようなことはできるのか分からず、何か良い方法はありますでしょうか?

<button onclick='/~~~~.html'>のようにページに直接飛ばすとすると、変数名違いで同じ内容のhtmlを複数作ったり、新しくコントローラーを作るのは冗長になると思いました。。)

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

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

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

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

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

maisumakun

2022/11/30 02:20

> マイリストボタンが押された時、自分のデータの一覧が表示される。 「ボタンを押した」あと、何がどのように呼び出される構造となっていますか?
guest

回答1

0

ベストアンサー

データベースをいじりたい訳ではないので、paramsで送るデータで操作を分けることはできないと分かりました。

この理解が正しくありません。Railsでは、GETのクエリ文字列で送信された値もparamsから回収できますし、それをデータベースと繋ぐ必要は全くありません。

投稿2022/11/30 02:21

maisumakun

総合スコア145183

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

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

pure_dorayaki

2022/11/30 02:30

ご返信ありがとうございます! 例えば、` <%= link_to 'マイリスト', restaurants_path, { method: :get, params:{ set: "my_restaurants" }} %>`のように、データーベースに無い属性を用意して送り、どっちのボタンか判別することができるということでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問