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

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

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

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

Ruby on Rails 6

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

Q&A

解決済

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

pure_dorayaki
pure_dorayaki

総合スコア6

Ruby

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

Ruby on Rails 6

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

1回答

0グッド

0クリップ

155閲覧

投稿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を複数作ったり、新しくコントローラーを作るのは冗長になると思いました。。)

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

maisumakun

2022/11/30 02:20

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

回答1

0

ベストアンサー

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

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

投稿2022/11/30 02:21

maisumakun

総合スコア141545

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

pure_dorayaki

2022/11/30 02:30

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

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ruby

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

Ruby on Rails 6

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