Railsでリンクや画像などを表示してみる
リンクや画像などの表示を試してみる。
リンク
link_toを使うと、リンクが生成できる。
$ vi app/views/sample/index.html.erb
<%= link_to 'リンク先の指定がない場合は現在へのリンクになる' %> <%= link_to ':controllerと:actionでリンク先を指定する', :controller => 'aaa', :action => 'bbb' %> <%= link_to '直接URLを指定することもできる', 'http://google.co.jp' %> <%= link_to '_blankを指定する場合', {:controller => 'sample', :action => 'index'}, :target => '_blank' %> <%= link_to 'リンク先に飛ぶ前に確認画面を表示させることもできる', {:controller => 'sample', :action => 'index'}, :confirm => '>移動しますか?' %>
HTMLは下記のように出力される。
<a href="/">リンク先の指定がない場合は現在へのリンクになる</a> <a href="/aaa/bbb">:controllerと:actionでリンク先を指定する</a> <a href="http://google.co.jp">直接URLを指定することもできる</a> <a href="/" target="_blank">_blankを指定する場合</a> <a data-confirm="移動しますか?" href="/">リンク先に飛ぶ前に確認画面を表示させることもできる</a>
【注意】 controllerとactionでリンク先を指定しても、routes.rbで指定されていないルートの場合はエラーになります。 上記のソースがエラーになる場合は、 get ':controller(/:action(/:id(.:format)))' でもroutes.rbに追加しておいてください。
URLの生成だけの場合はurl_for url_for - リファレンス - Railsドキュメント http://railsdoc.com/references/url_for
画像/CSS/Javascript
画像やCSS/Javascriptのタグは下記のように指定する。
$ vi app/views/sample/index.html.erb
<%= image_tag 'hoge.png' %> <%= stylesheet_link_tag 'hoge' %> <%= javascript_include_tag 'hoge' %>
ファイルが
public/
├images/
├stylesheets/
└javascripts/
にある場合は、
HTMLの出力結果は下記のようになる。
<img alt="Hoge" src="/images/hoge.png" /> <link href="/stylesheets/hoge.css" media="screen" rel="stylesheet" /> <script src="/javascripts/hoge.js"></script>
ファイルが
app/assets/
├images/
├stylesheets/
└javascripts/
にある場合は、
HTMLの出力結果は下記のようになる。
<img alt="Hoge" src="/assets/hoge.png" /> <link href="/assets/hoge.css?body=1" media="screen" rel="stylesheet" /> <script src="/assets/hoge.js?body=1"></script>
ファイルがpublicとapp/assetsの両方ある場合は、app/assetsのほうが優先される。
ファイルが両方にある場合にpublicのほうを表示させたい場合は下記のように指定する。
<%= image_tag '/images/hoge.png' %> <%= stylesheet_link_tag '/stylesheets/hoge' %> <%= javascript_include_tag '/javascripts/hoge' %>
assetsのほうにファイルをおいておくと、Railsがいろいろやってくれるみたいだが、 詳細はおいおい勉強していく。 アセットパイプライン(Asset Pipeline) - Railsドキュメント http://railsdoc.com/asset_pipeline