renderメソッド リファレンス

#コントローラ
##render 'view'

```ruby:basic_controller.rb
def res_render
@msg = 'Hello World!'
#viewのテンプレート
render 'view'
end
```

```ruby:basic/views.html.erb
<div class="main"><%= @msg %></div>
```
##render :text => 'Hello World!'
```ruby:basic_controller.rb

def render_text
#メッセージ
render :text => 'Hello World!'
end
```
##render xml => @article
```ruby:basic_controller.rb

def render_xml 
#articleテーブルの内容をＸＭＬ形式で表示
@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>
```

```ruby:basic_controller.rb

def render_xml2
render :xml => '<error>108 Error Occured</error>'
end
```

##render :json => @articles
```ruby:basic_controller.rb

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
```ruby:basic_controller.rb

def render_status
#404 Not Found 出力　（コンテンツは空）
render :nothing => true, :status => status
end
```

##render :nothing => true, :status => status

```ruby:basic_controller.rb

def render_string
#view.html.erbによる結果を変数resultにセット
render = render_to_string 'view'
#変数resultの内容を描画
render :text => result
end
```
#ビューの開発
##render '部分テンプレート名'　'param:パラメータ名' => 'value:パラメータ値'

```ruby:view_controller.rb

view_controller.rb
def part_basic
@article = Article.find(1)
end
```

```ruby:view/part_basic.html.erb
<div id="info">
<%# 部分部分テンプレートarticle(記事記載)/details(詳細を表示するか)パラメータをセット＆描画 %>
<%= render 'article/article', :article => @article, :details => true %>
</div>
```

```ruby:article/_article.html.erb
<%# detailsパラメータの省略時はデフォルト値としてfalseをセット %>
<% detail = false if details.nil? %>
<div class="inf">
<%= link_to article.title, article.url %><br />
<% article.authors.each so |a| %>
<% a.panname %>&nbsp;
<% end %>　著
(<% end %>公開)<br />
<%# detailsパラメータがtrueの場合のみアクセス数を表示 %>
<%# if details %>Access:<%= article.access %>件<% end %>
</div>

```

##render '@article:モデルオブジェクト'

```ruby:view_controller.rb
def part_omit
@article = Article.find(2)
end
```


```ruby:view/part_omit.html.erb
<div id="info">
<%# article/_article.html.erb (P.282)にモデル@articleを渡す %>
<%= render @article %>
</div>
```

##render :partial => 'articles/article:モデルの配列',
##render :partial => { :'details:パラメータ名' => :'true:パラメータ値', }
##render 'articles/article:モデルの配列'

```ruby:view/part_collect.html.erb
<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:パラメータ値' }

```ruby:view_controller.rb
def part_separate
@articles = Article = Article.order('published DESC')
end
```
```ruby:view/part_separate.html.erb
<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>
```
```ruby:view/_sep.html.erb
<hr />
```