画像を希望ページへリンクさせてクリックしたら遷移させる
上記の機能を実装する際、手こずったので備忘録として残しておきます。aタグでリンクさせようと思い、書き方を調べて相対パスで記述する事にした。
aタグ パス指定
下記のコードで実行したが、Routing Errorが起きた。
tops/index.html.erb
<a href="groups/index.html.erb"><img src="assets/1.png" class="img-fluid" alt="Responsive image"></a>
下記の方法も試したが、同様にRouting Eroorが起きた。
| ◆ リンク先などの記述例 |
同じフォルダ内にリンクするときは、ファイル名のみ(または ./ に続けてファイル名)を記述します。
下位階層にリンクするときは、フォルダ名に続けて / を入れ、ファイル名を記述します。
上位階層にリンクするときは、../ に続けてファイル名を記述します。2つ上の階層を指定するときは、../../ に続けてファイル名を記述します。
並列した階層のフォルダにリンクするときは、../ に続けてフォルダ名と / を入れ、ファイル名を記述します。
解決法
link_toを使用して、記述することにした。
まずは、ルーティングの設定
routes.rb
Rails.application.routes.draw do
devise_for :users
root 'tops#index'
resources :groups, only: :index
end
次に、コントローラー
groups_controller.rb
class GroupsController < ApplicationController
def index
end
end
最後にビュー
tops/index.html.erb
<%= link_to (groups_path) do%>
<img src="assets/1.png" class="img-fluid" alt="Responsive image">
<% end%>
上記手順で画像リンクに成功した。
なぜaタグでできなかったのか?
・railsでリンクさせる場合は相対パスが使用できない?
・rails,rubyのバージョンが相対パスの仕様に対応してない?
(rails 5.0.7.2 , ruby 2.5.1)
確証が持てないのでわかる方はぜひコメントお願いします!!!!!