Yuki Matsumoto

To be engneer soon / Ruby on Rails

editアクションを追加して編集画面を作成する

2019-02-19 Yuki MatsumotoRuby on Rails

一覧ページ、新規投稿ページができたので、次に編集画面を作っていきます。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もいじりたくなってきた感じ。今週末にはデザインに取りかかれるように進めていこう。