editアクションを追加して編集画面を作成する
一覧ページ、新規投稿ページができたので、次に編集画面を作っていきます。routesでは/ideas/:id/edit
のURLで編集を行います。:id
には
editアクションを作成する
まずはコントローラーにアクションを追加します。編集画面はeditアクションで行います。
def edit
@idea = Idea.find(params[:id])
end
上記はfindメソッドにparamsを使うことで動的にidを取ってくる処理をさせてます。あとは作成したテンプレート変数をviewに渡していい感じにしていきます。
編集画面のViewを作成する
編集画面のviewはedit.html.erb
から編集を行います。viewの中身はnew.html.erb
で使いまわせる部分があるため、Railsのルールにしたがい新規ファイルに使いまわす処理を書いていきます。作成するファイルには命名規則があり、ファイルの先頭に_
をつけます。今回は_form.html.erb
とします。
ファイル内にnew.html.erb
の内容を貼り付ける
<p>
<%= f.label :title %>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :content %>
<%= f.text_area :content %>
</p>
<% end %>
そしてnew.html.erb
でファイルを読み込むためにrenderメソッドを使います。
<h2>What is your Idea?</h2>
<%= render "form" %>
<%= link_to "Back", ideas_path %>
※ヘッダータグをつけてタイトルをわかりやすくしてます。
edit.html.erb
にもファイルを読み込むための記述をします。
<h2>Edit</h2>
<%= render "form" %>
<%= link_to "Back", ideas_path %>
これで_form.html.erb
の内容を2つのファイルで読み込むことができました。
まとめ
今日はここまで。今日は集中できたのか3記事分進めることができた。明日はさらに各アクションごとのviewを作り込んでいく。そろそろCSSもいじりたくなってきた感じ。今週末にはデザインに取りかかれるように進めていこう。