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

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

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

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

Ruby

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1073閲覧

link_toで記事IDをviewからcontrollerに渡したい

Noir

総合スコア8

Ruby on Rails 5

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

Ruby

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/03/25 04:50

投稿記事の削除機能を作っているのですが、destroyメソッドが正しく呼び出されず手詰まりしてしまいました。

Better_errorsのRequest parametersを確認したところ、"id"=>"id"となっており、記事IDが正しく入力されておりませんでした。
(想定では/config/"指定した記事ID"/info_destroyとなる)

{"_method"=>"post", "authenticity_token"=>"長いアルファベットの列", "controller"=>"config", "action"=>"info_destroy", "id"=>"id"}

###やりたいこと
viewから記事IDをcontrollerに渡してinfo_destroyメソッドを呼び出したい。

###ソースコード

<!-- info_console.html.erb --> <% @infoConsolePosts.each do |information_console| %> <div class="card"> <div class="card-header"> <h5><%= information_console.page_title %></h5> </div> <div class="card-body"> <p class="text-muted">ページID:<%= information_console.page_id %></p> <a class="btn" type="submit" href="#" data-toggle="modal" data-target="#infoDestroy">削除</a> <a class="btn" type="submit" href="#" data-toggle="modal" data-target="#infoEdit">編集</a> </div> </div> <% end %> <div class="modal fade" id="infoDestroy" tabindex="-1" role="dialog" aria-labelledby="infoDestroyLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="infoDestroyLabel">記事を削除する</h5> <button type="button" class="close" data-dismiss="modal" aria-label="閉じる"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> <p>記事を削除します、よろしいですか?</p> <strong class="text-danger">注意:この操作は取り消せません</strong> </div> <div class="modal-footer"> <button class="btn btn-secondary" data-dismiss="modal">閉じる</button> <a type="submit"><%= link_to("削除", "/config/#{:id}/info_destroy", method: "post", class: "btn") %></a> </div> </div> </div> </div>
#config_controller.rb class ConfigController < ApplicationController def info_console #お知らせ一覧に表示するテーブル情報を取得する @infoConsolePosts = InfoTable.all.order(page_id: :desc) end def info_destroy @destroyPage = InfoTable.find_by(page_id: params[:id]) @destroyPage.destroy redirect_to("/config/info_console", notice: "destroy!") end end
#routes.rb Rails.application.routes.draw do get "config/info_console" => "config#info_console" post "config/:id/info_destroy" => "config#info_destroy" end

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

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

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

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

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

guest

回答1

0

ベストアンサー

"id"=>"id"となるのはink_to("削除", "/config/#{:id}/info_destroy",となっているからです。#{:id} の所に削除すべきinformation_consoleのidを入れればよいです。

のですが、

そのIDをどうやったら手に入るか、がcodeを見た限りではわからない。
data-target="#infoDestroy">削除</a> をclickするとJSが動いて<div class="modal fade" が立ち上がる のだろうということは想像できるのですが、肝心のJSがないので「どのinformation_consoleを消すのか」という情報をどうやって渡しているのかがわかない。
htmlの構造を見た所それ渡すの忘れてない?
こんなややこしいやり方でなく、一般的な

link_to('削除',information_console, :method => :delete, :data => { :confirm => 'Are you sure?'}

ではだめ?

投稿2020/03/25 13:00

winterboum

総合スコア23347

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問