Viewヘルパーを使ったCRUD作成 (3/4)
作成:2012-02-27 08:01
更新:2012-02-27 08:11
更新:2012-02-27 08:11
■データ削除のリンク
続いて、データの削除についてです。これは、何も違いなんてない、と思うでしょう。削除のアドレスへのリンクを用意してそこにジャンプさせるだけですから、別に違いなどないような気もしますね。ところが、実は考えないといけないことはいろいろあります。
まず、削除アドレスへのリンクタグについてです。これは、下のリスト欄に掲載しておきました。「link_to」というもので<a>タグによるリンクタグを生成することができます。これは以下のような形で記述されます。
これを受けるのはdestroyアクションメソッドです。メソッドの内容は、これは前回作成したものとほとんど変わりありません。Helo.find(params[:id])で指定したIDのインスタンスを取得し、destroyメソッドで削除するだけです。
こうして出来上がった削除用のリンクは、クリックすると画面に削除の確認ダイアログが現れ、そこでOKすると削除するようになります。
もし、リンクをクリックしたらダイアログが現れず削除もされずにデータの表示画面にジャンプしてしまった、というような場合には、おそらくJavaScriptライブラリが正しくロードされていないのが原因です。スタイルシートとJavaScriptのスクリプトをロードするタグの生成を、下のリスト欄にあるような形に修正してみてください。
ここでは、読み込む対象を"application"にしています。こうすることにより、アプリケーションで用意されているライブラリを読み込むタグがすべて生成されます。(もちろん、helos用のファイルの読み込みタグも生成されます)
まず、削除アドレスへのリンクタグについてです。これは、下のリスト欄に掲載しておきました。「link_to」というもので<a>タグによるリンクタグを生成することができます。これは以下のような形で記述されます。
link_to 表示テキスト,「表示テキスト」は、リンクとして表示するテキストです。「Modelインスタンス」は、削除するHeloインスタンスをそのままインスタンス変数で指定すればOKです。「メッセージ」というのは、リンクをクリックした時に現れる確認のダイアログで表示されるメッセージです。そして最後に、method: :deleteで削除を実行することを示します。
Modelインスタンス, confirm: メッセージ, method: :delete
これを受けるのはdestroyアクションメソッドです。メソッドの内容は、これは前回作成したものとほとんど変わりありません。Helo.find(params[:id])で指定したIDのインスタンスを取得し、destroyメソッドで削除するだけです。
こうして出来上がった削除用のリンクは、クリックすると画面に削除の確認ダイアログが現れ、そこでOKすると削除するようになります。
※スクリプト/スタイルシートのタグ生成について
もし、リンクをクリックしたらダイアログが現れず削除もされずにデータの表示画面にジャンプしてしまった、というような場合には、おそらくJavaScriptライブラリが正しくロードされていないのが原因です。スタイルシートとJavaScriptのスクリプトをロードするタグの生成を、下のリスト欄にあるような形に修正してみてください。
ここでは、読み込む対象を"application"にしています。こうすることにより、アプリケーションで用意されているライブラリを読み込むタグがすべて生成されます。(もちろん、helos用のファイルの読み込みタグも生成されます)
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※削除用のリンク・タグ <%= link_to '削除', @helo, confirm: '削除してもいいですか?', method: :delete %> ※destroyアクションメソッド def destroy helo = Helo.find(params[:id]) helo.destroy redirect_to '/helos' end ※レイアウトでのスクリプト・スタイルシート読み込みタグの生成 <%= stylesheet_link_tag "application" %> <%= javascript_include_tag "application" %>
※関連コンテンツ