Route.rb 書き方

[httpメソッド] ‘URIパターン’, to: ‘[コントローラー名]#[アクション名]’

Get ‘posts’, to: ‘posts#index’

 

URIパターン;パスと呼ばれる

HTTPメソッドとはリクエストの大まかな種類を示す

例えばgetは扱いたいデータを表示するだけメソッド

Postはデータを送信することも含めるメソッド フォームのデータを送信するときとかに使う

①リクエス

 

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>

 

https://tech-master.s3.amazonaws.com/uploads/curriculums//dac47a522f552b454bfef12d087035af.png

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です。