Railsで掲示板を作ってみた

おはようございます。

 

僕は今ProgateでRailをやっています。

アウトプットとして、掲示板の作り方を載せていきたいと思います。

 

1.新しくアプリを作成するために

ターミナルで$ rails new 〇〇と打ち込みましょう。(〇〇にはアプリ名が入ります。)

このコマンドを打つことでアプリを作成するのに必要なフォルダやファイルが用意されます。

 

2.投稿ページの作成

viewが表示される仕組み

 

ページが表示されるまでの手順は以下の通りです。

ユーザーがURLを打ち込む→ルーティングがそのURLに合致したControllerに渡す→アクション内で変数の定義やデータの取得をしてViewに渡し表示されます。

 

3.controllerの作成

まず、はじめにcontrollerを作りましょう。ターミナルで$ rails g controller posts newと打ち込むことでnewアクションを持ったpostsコントローラーを作成することができました。この投稿作成ページは変数定義やデータの取得はしないのでアクションの中は何も記述しなくて大丈夫です。

 

4.ルーティングの設定とビューの作成

ルーティングはURL => アクション名と記述していきます。

get "posts/new" = "posts#new"

これは”posts/new”にユーザーがアクセスしてきたらpostsコントローラーのnewアクションに飛んでね。ということです。

 

getについてはまた後ほど解説していきます。

 

次にビューの作成です。

投稿フォームのコードは以下の通りです。

<%= form_tag("posts/create") do %>
<textarea name="content"></textarea>
<input type="submit" value="投稿">
<% end %>

 

textareaが投稿を書く欄を作っています。

 

5.投稿を保存する

投稿を保存するアクションに飛ぶためのURLは4で書いたようにform_tagメソッドの中に記述します。

 

ルーティング

posts "posts/create" =&gt; "posts#create"

 

getとpostの違いですが、DBに変更を加えるのがpost,変更を加えないのがgetです。

 

アクション

@post = Post.new(content: params[:content])
@post.save
redirect_to("posts/index")

 

インスタンスを作成し、フォームから受け取ったデータを引数として持たせます。

paramsの中に入っているのがフォームから受けとった内容です。

<textarea name=”content>と記述することでname属性の値をキーとした内容を送信することができます。

その後saveメソッドで保存して一覧にリダイレクトします。

 

6.一覧ページの作成

一覧ページも同じように作っていきます。

まず、ルーティングからです。

get "posts/index" =&gt; "posts#index"

 

アクション

def index
@posts = Post.all
end

 

allメソッドで全てのデータを取得し,@postsに配列としていれます。

@を前につけることでビューで表示できるようになります。

 

ビュー

<% @posts.each do |post| %>
<%= post.content %>
<% end %>

 

ビューでRubyの記法を使う場合<%%>を使います。実際に画面に表示させる時だけ<%= %>を使います。

 

以上で完成です。

また、今回はあくまで投稿の保存とデータの取得、表示をメインに説明させて頂いたのでHTMLについての記述は最低限にしています。

ご了承ください。

 

 

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です