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

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

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

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

Ruby

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

Q&A

1回答

1594閲覧

【Ruby on Rails】呼び出し元のlink_toによって処理を分けたい場合(method: :delete)

sk2938

総合スコア21

Ruby on Rails 5

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

Ruby

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

0グッド

0クリップ

投稿2018/10/09 18:02

編集2018/10/09 18:03

どちらをクリックしても同じアクションを呼びますが、
どちらのlinkから呼ばれたかを判断して処理を分けたいです。

このような場合、どのような方法があるのでしょうか?

宜しくお願い致します。

やってみたこと(1)

def destroy if params[:micropost_type] ='delete' @micropost.destroy flash[:info] = "目標を諦めました" redirect_to request.referrer || root_url and return elsif params[:micropost_type] = 'complete' @micropost.destroy flash[:success] = "目標を達成しました" redirect_to request.referrer || root_url end end <%= link_to '諦める', micropost, method: :delete, micropost_type: 'delete' ,data: { confirm: "本当に諦めますか"} %> <%= link_to '達成', micropost, method: :delete, micropost_type: 'complete' %>

やってみたこと(2)

def destroy if params[:delete] @micropost.destroy flash[:info] = "目標を諦めました" redirect_to request.referrer || root_url and return elsif params[:complete] @micropost.destroy flash[:success] = "目標を達成しました" redirect_to request.referrer || root_url end end <%= link_to '諦める', micropost, method: :delete, name: "delete" ,data: { confirm: "本当に諦めますか"} %> <%= link_to '達成', micropost, method: :delete, name: "complete" %>

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

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

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

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

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

guest

回答1

0

ruby

1<%= link_to "諦める", micropost_path(@micropost, params: { micropost: { micropost_type: 'delete'} }), method: :delete, data: { confirm: "本当に諦めますか"} %>

のような感じで書けばパラメータを渡せたと思います。
あとは渡したパラメータに合わせてアクション内をちょっと書き換えればできそうです。

投稿2018/10/10 00:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

sk2938

2018/10/10 00:30

``` def destroy if params[:micropost_type] ='delete' @micropost.destroy flash[:info] = "目標を諦めました" redirect_to request.referrer || root_url and return elsif params[:micropost_type] = 'complete' @micropost.destroy flash[:success] = "目標を達成しました" redirect_to request.referrer || root_url end end ``` ``` <%= link_to '諦める', micropost_path(micropost, params: { micropost: { micropost_type: 'delete'} }), method: :delete %> <%= link_to '達成', micropost_path(micropost, params: { micropost: { micropost_type: 'complete'} }), method: :delete %> ``` としたのですが、達成リンクをクリックすると目標を諦めました。と出てきてしまいます。どのようにすればよいのでしょうか?
退会済みユーザー

退会済みユーザー

2018/10/10 00:34

比較ではなく代入してるからじゃないですか?
sk2938

2018/10/10 00:40

``` def destroy if params[:micropost_type] =='delete' @micropost.destroy flash[:info] = "目標を諦めました" redirect_to request.referrer || root_url and return elsif params[:micropost_type] == 'complete' @micropost.destroy flash[:success] = "目標を達成しました" redirect_to request.referrer || root_url end end ``` にしてみましたが、リンクをクリックしても何も起こらなくなってしまいました。
退会済みユーザー

退会済みユーザー

2018/10/10 00:45

パラメータがどのような形で渡されているか把握していますか?
sk2938

2018/10/10 00:53

すいません。把握できていません。 一応 if params[:micropost_type].to_s == 'delete' も試してみましたが、できませんでした。
退会済みユーザー

退会済みユーザー

2018/10/10 00:56

def destroy のすぐ下に byebug を差し込んでリンクを押すとデバックモードになるので params を実行すればparamsの形がわかりますよ。 そこから'delete'を取得できるよう、パラメータなり取得するコードなりを書き換えるといいと思います。
sk2938

2018/10/10 00:57

調べていたら 「URLにパラメータをくっつけたい時に link_to でやる方法。 <%= link_to "リンクだよ", controller: "posts", action: "index", order: "created_at" %> のようにコントローラーとアクションを指定しないといけない。」 と書いてあったので、その方法を試してみようと思っているのですが、micropostのidの指定の仕方がわかりません。どうすればいいかわかりますか? https://workabroad.jp/posts/2082
退会済みユーザー

退会済みユーザー

2018/10/10 01:02

その方法だとGETリクエストになりますがそれでいいんですか?
退会済みユーザー

退会済みユーザー

2018/10/10 01:03

きちんとやりたいことがまとまったら質問を編集してコメントしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問