【Rails】newアクションとcreateアクションを実装してデータの新規登録機能を作る【dotinstallでRailsの基礎を勉強したノートその3】

リポジトリはここ。

https://github.com/totzYuta/dotinstall_ruby-on-rails

エピソードごとにコミットするようにした。

今回は新規作成機能を実装する。

流れは以下のようになってる

  1. そのページへのリンクを作成
  2. newアクションを定義
  3. 遷移先view(new)を作成
  4. createアクションを定義

1. viewでページへのリンクを作成

rake routesでlink_toタグで指定すべきパスの名前を確認する。

Prefix_path でいける

<p><%= link_to "Add New", new_project_path %></p>

2. アクションを定義

prjectコントローラにnewアクションを定義

  def new
    @project = Project.new
  end

新しいデータの格納用インスタンス変数を宣言してるのかな?ここの説明なさすぎてよくわかんない。

次のcreateアクションに渡すために値を保持してるのかな

3. 遷移先view(new)を作成

app/views/projects/new.html.erbを作成、編集する

<h1>Add New</h1>

<%= form_for @project do |f| %>

  <p>
    <%= f.label :title %><br>
    <%= f.text_field :title %>
  </p>

  <p>
    <%= f.submit %>
  </p>

<% end %>

helperメソッドの使い方も覚えよう。多分なれてないだけで、これかなり便利。

4. アクションを定義

projectsコントローラでcreateアクションを定義する。

Rails的に表現すれば、"projects#create"って感じになるのかな

  def create
    @project = Project.new(project_params)  # put into the data from form
    @project.save
    redirect_to projects_path
  end
    
  # for security from here
  private

  def project_params
    params[:project].permit(:title)
  end

って感じ。

PerfectRoRでわけわからずやってたけど private以下はセキュリティのため のよう。

必要なパラメータだけをここでフィルタリングしてcreateアクションで使うためにこんな書き方をするらしい。

そうだったのか、覚えておこう。

疑問点

  • createアクションが呼ばれるタイミングは...?

以下の記事で考察

【Rails】createアクションが呼ばれるタイミングっていつなん... - とつろぐ