#コントローラ
##render 'view'
def res_render
@msg = 'Hello World!'
#viewのテンプレート
render 'view'
end
<div class="main"><%= @msg %></div>
##render :text => 'Hello World!'
def render_text
#メッセージ
render :text => 'Hello World!'
end
##render xml => @article
def render_xml
#articleテーブルの内容をXML形式で表示
@article = Article.all
rendr :xml => @articles
end
↓
<?xml version="1.0" encoding="UTF-8">
<articles type="array">
<article>
<id type="integer"></id>
<url>http://www.atmarkit.co.jp/fdotnet/aspnetmvc3/index/index.html</url>
<title>ASP.NET MVC入門</title>
<published type="date">2011-02-18</published>
...
</article>
..
</articles>
def render_xml2
render :xml => '<error>108 Error Occured</error>'
end
##render :json => @articles
def render_json
#articlesテーブルJSON形式
@article = Article.sll
render :json => @articles
end
↓
[
{
"access": 133
"closed": false,
"created_at" : "2011-09-29T06:53:28Z"},
"id" : 1,
"published" :"2011-02-18",
"title" : "ASP .NET MVC\U5165\U9580",
"updated_at" : "2011-09-29T06:53:28Z",
"url" : "http://www.atmarkit.co.jp/fdotnet/aspnetmvc3/index/index.html",
}, ....
]
##render :nothing => true, :status => status
def render_status
#404 Not Found 出力 (コンテンツは空)
render :nothing => true, :status => status
end
##render :nothing => true, :status => status
def render_string
#view.html.erbによる結果を変数resultにセット
render = render_to_string 'view'
#変数resultの内容を描画
render :text => result
end
#ビューの開発
##render '部分テンプレート名' 'param:パラメータ名' => 'value:パラメータ値'
view_controller.rb
def part_basic
@article = Article.find(1)
end
<div id="info">
<%# 部分部分テンプレートarticle(記事記載)/details(詳細を表示するか)パラメータをセット&描画 %>
<%= render 'article/article', :article => @article, :details => true %>
</div>
<%# detailsパラメータの省略時はデフォルト値としてfalseをセット %>
<% detail = false if details.nil? %>
<div class="inf">
<%= link_to article.title, article.url %><br />
<% article.authors.each so |a| %>
<% a.panname %>
<% end %> 著
(<% end %>公開)<br />
<%# detailsパラメータがtrueの場合のみアクセス数を表示 %>
<%# if details %>Access:<%= article.access %>件<% end %>
</div>
##render '@article:モデルオブジェクト'
def part_omit
@article = Article.find(2)
end
<div id="info">
<%# article/_article.html.erb (P.282)にモデル@articleを渡す %>
<%= render @article %>
</div>
##render :partial => 'articles/article:モデルの配列',
##render :partial => { :'details:パラメータ名' => :'true:パラメータ値', }
##render 'articles/article:モデルの配列'
<div id="info">
<%# 以下は同じ意味 %>
<%= render :partial => 'articles/article',
:collection => @articles, :locals => { :details => true }%>
<%= render :partial => @articles, :locals => { :details => true } %>
<%# :localsパラメータが不要な場合は、以下の記述も可%>
<%= render @articles%>
##render :partial => 'articles/article:部分テンプレート名', :collection => '@articles:モデルの配列',
:spacer_template => 'sep:区切りテンプレート', :locals => { 'details:パラメータ名' => 'true:パラメータ値' }
def part_separate
@articles = Article = Article.order('published DESC')
end
<div id="info">
<%# articles/_article.html.erb(P.282)を順に出力する際、区切りテンプレートとして_sep.html.erbを利用 %>
<%= render :partial => 'articles/article', :spacer_template => 'sep',
:collection => @article. :locals => { :details => true }%>
</div>
<hr />