掲示板を作ってみる・その11【レス用のビューファイルを作成】
掲示板を作ってみる・その1【何を作るの?】
掲示板を作ってみる・その2【モデルを作る パート1】
掲示板を作ってみる・その3【モデルを作る パート2】
掲示板を作ってみる・その4【ルーティングを考える】
掲示板を作ってみる・その5【コントローラを生成】
掲示板を作ってみる・その6【ヘルパを作る】
掲示板を作ってみる・その7【スレッド用コントローラを編集】
掲示板を作ってみる・その8【レス用コントローラを編集】
掲示板を作ってみる・その9【レイアウトファイルとスタイルシートファイルを作成】
掲示板を作ってみる・その10【スレッド用のビューファイルを作成】
掲示板を作ってみる・その11【レス用のビューファイルを作成】
掲示板を作ってみる・その12【ruby-gettext で日本語化】
レス用に view ファイルを作ります。
ボンボンと2つ立て続けに作ります。
app/views/post/list.html.erb
<%= link_to '掲示板に戻る', :controller => 'topic', :action => 'list' %>
<%= link_to '全部', :range => nil %>
<%= link_to '1-', :range => '-100' %>
<%= link_to '最新50', :range => 'l50' %>
<br>
<hr style="border-width: 0pt; background-color: rgb(136, 136, 136); color: rgb(136, 136, 136); height: 1px; position: relative; top
: -0.4em;">
<div style="margin: -0.5em 0pt 0pt; color: red; font-size: larger; font-weight: normal;">
<%= h(@topic.title) %>
</div>
<br>
<dl>
<% @posts.each do |p| %>
<dt>
<%= h(p.res_no) %> :
<% unless p.email.blank? %>
<%= mail_to p.email, '<b>' + h(p.name) + '</b>' %>
<% else %>
<font color="green"><b>
<%= h(p.name) %>
</b></font>
<% end %>
:
<%= h(date_format(p.created_at)) %>
ID:<%= h(generate_id(p.ip_address, p.created_at)) %><br>
</dt>
<dd>
<%= add_link_to_content(p.content, p.topic.id) %><br>
<br>
</dd>
<% end %>
<% if @topic_max_res_no >= MAX_POSTS %>
<dt>
このスレッドは1000を超えました。<br>
もう書けないので、新しいスレッドを立ててくださいです。。。<br>
</dt>
<% end %>
</dl>
<hr>
<center>
<%= link_to '新着レスの表示', :range => (@res_no_next-1).to_s + 'n-' %><br>
</center>
<hr>
<%= link_to '掲示板に戻る', :controller => 'topic', :action => 'list' %>
<%= link_to '全部', :range => nil %>
<%= link_to '前100', :range => '-' + @res_no_prev.to_s %>
<%= link_to '次100', :range => @res_no_next.to_s + '-' %>
<%= link_to '最新50', :range => 'l50' %>
<br>
<% if @topic_max_res_no < MAX_POSTS %>
<% form_for :post, :url => {:action => 'confirm'} do |f| %>
<%= f.submit '書き込む' %>
名前:<%= f.text_field :name, {:size => 19} %>
E-mail(省略可):<%= f.text_field :email, {:size => 19} %><br>
<%= f.text_area :content, {:rows => 5, :cols => 70, :wrap => "off"} %>
<%= f.hidden_field :topic_id, {:value => @topic.id} %>
<% end %>
<% end %>
app/views/post/confirm.html.erb
<%= error_messages_for :post %>
書き込み
<br>
<% form_for :post, :url => {:action => 'create'} do |f| %>
名前:<%= h(@post.name) %><br>
E-mail:<%= h(@post.email) %><br>
<pre>内容:<%= h(@post.content) %>
</pre>
<br>
投稿確認<br>
・自分の投稿の責任は自分で取れよ<br>
・でも著作権は放棄しろ<br>
<br>
<%= f.submit '上記全てを承諾して書き込む' %><br>
<%= f.hidden_field :name, {:value => @post.name} %>
<%= f.hidden_field :email, {:value => @post.email} %>
<%= f.hidden_field :content, {:value => @post.content} %>
<%= f.hidden_field :topic_id, {:value => @post.topic_id} %>
<% end %>
<br>
変更する場合は戻るボタンで戻って書き直して下さい。
list.html.erb
一個一個バラして見ていけば、特にそんなに難しいこともやっている訳でもないので楽勝っすね。
confirm.html.erb
scaffold したときは、こういった確認画面って表示されないような気がしたので、ちょっと参考にしていただいたら光栄です。hidden_field の :value を HTML エスケープしてはいけない(Rails がエスケープしてくれる)というルールとかがあって、頭がこんがらがりそうです。
おしまい。次回へ続く
【広告】