チェック項目の追加フォームを作ります。やっとだ。作るのは、new
メソッドとcreate
。new
で作ったデータを元にcreate
でセーブするイメージでしょうか。
まずは、チェック項目の一覧(app/views/checks/index.html.erb)にnewメソッドへのリンクを貼ります。
<h1>
Checks
<%= link_to image_tag('icon_plus_alt2.png',size: '25x25'), new_check_path %>
</h1>
タイトルの横に+ボタンを配置してみました。
次は、コントローラ/app/controllers/checks_controller.rb
にnew
メソッドを作っていきます。
def new
@check = Check.new
end
ここはこれだけ。で、呼び出されるビューapp/views/checks/new.html.erb
を作っていきます。ここでは、チェック項目の内容を登録するフォームを作ります。
<h1>Create Check Item</h1>
<%= form_for @check do |c| %>
<p>
<%=c.label :title %>
<%=c.text_field :title %>
</p>
<p>
<%=c.label :contents %>
<%=c.text_area :contents %>
</p>
<p>
<%= c.submit %>
</p>
<% end %>
で、最後にcreate
メソッドの作成。
def create
@check = Check.new(check_params)
@check.save
redirect_to checks_path
end
private
def check_params
params[:check].permit(:title, :contents)
end
プライベート関数check_paramsで、セットする値のチェックをpermitでしています。セキュアなプログラミングにするために、こういう事をするらしいですね。テストも作らなきゃ…。
とりあえず、これでチェック項目の追加が完成!
やってみると、コンテンツの改行が抜けてしまった・・・。
どうしたら良い?
textarea で入力した改行を表示させる
チェック項目詳細表示のビューapp/views/checks/show.html.erb
にて、コンテンツを表示するときに文字列をsimple_format
で囲みます。
<h1><%= @check.title %></h1>
<p><%= simple_format(@check.contents) %></p>
これで、改行も表示されました。よしよし、大分できてきた気がする!
気のせいじゃありません様に。。
コメント