Railsでリンクや画像などを表示してみる

RailsでHello, world!を表示してみるの続き

リンクや画像などの表示を試してみる。

リンク

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