■
①リクエスト
def create
Post.create(post_params)②プライベートメソッドの呼び出し
end
private
def post_params
params.permit(:content)③特定のキーを受け取るように制限
end
paramsの中のcontentだけを受け取りを許可permitするよーってことになる
permitメソッドとは、paramsで取得したパラメーターに対し保存の許可処理を行うメソッドです。
paramsはリクエストの際にデータを入れておくダンボールみたいなもん
それを運んでデータベースに行きまーす
params[:content]ダンボールに入れたデータ
content:コンテントカラムに届けといてくれ
みたいなね
データの宅急便はrailsではストロングパラメータを使うのが必須
ストロングパラメータは特定のキーを受け取るためのもの
■
params
コントローラーにたどり着くデータが格納されているハッシュオブジェクトのようなものです。フォームで送信されたデータもparamsの中に格納されてコントローラーで受け取られます。
フォームより送られたデータの場合、inputタグのname
に記載されたキーでparamsに格納されています。
<%= form_tag('/posts', method: :post) do %> <input type="text" name="content"> <input type="submit" value="投稿する"> <% end %>
入力された情報の値はparams[:content]として渡される。ふーん
■
railsのフォーム
<h1>新規投稿ページ</h1> <form action="/main" method="post"> <input type="text" name="content"> <input type="submit" value="投稿する"> </form>
type | 用途例 |
---|---|
type="text" | 1行テキストボックス |
type="password" | パスワード入力ボックス(入力したテキストがアスタリスクなどに置き換えて表示される) |
type="checkbox" | チェックボックス(複数選択可能) |
type="radio" | ラジオボタン(複数の中から一つしか選択できない) |
type="submit" | 送信ボタン |
■
routes.rb
Rails.application.routes.draw do get 'posts', to: 'posts#index' get 'posts/new', to: 'posts#new' end
書いてから
$ rails routes Prefix Verb URI Pattern Controller#Action posts GET /posts(.:format) posts#index posts_new GET /posts/new(.:format) posts#new (以下省略)
rails routesでルートチェック
で、コントローラーを作る
class PostsController < ApplicationController def index @posts = Post.all end def new end end
で、対応するビューを作る
ビューファイルはapp/views/コントローラー名
ディレクトリに格納され、ファイル名はアクション名.html.erb
となります。したがって、今回作成するのは、app/views/posts/new.html.erb
です。