【Rails】newアクションとcreateアクションを実装してデータの新規登録機能を作る【dotinstallでRailsの基礎を勉強したノートその3】
リポジトリはここ。
https://github.com/totzYuta/dotinstall_ruby-on-rails
エピソードごとにコミットするようにした。
今回は新規作成機能を実装する。
流れは以下のようになってる
- そのページへのリンクを作成
- newアクションを定義
- 遷移先view(new)を作成
- 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アクションが呼ばれるタイミングは...?
以下の記事で考察