Help us understand the problem. What is going on with this article?

form_tagをform_forに書き換える

初めまして!
Rails初学者が初めてQiitaで書きます!

form_forってどうやって書いたらいいの?


アプリを作成する際に苦戦したので備忘録として記事を残しておきます。

form_for基本形
<%= form_for (modelobject, option) do |f| %>
 フォームコントロールの設定
<% end %>

これ書いたらformが作成されると思っていましたが、うまくいきません。

まずはビューの部分を記述する


new.html.erb
<div class="contents row">
 <%= form_for @post do |form| %>
//@postにフォームコントロール内で入力する値を入れる//
  <h5>タイトル</h5>
   <%= form.text_field :content, placeholder: 'content' %>
  //ブログのタイトルを入力する為のtext_field
  <h5>本文</h5>
   <%= form.text_field :content, placeholder: 'content' %>
  //ブログの本文を入力する為のtext_filed
  <%= form.submit "SENT" %>
 //送信ボタン
 <% end %>
</div>

次にcontrollerを編集する


posts_controller.rb
class PostsController < ApplicationController

  before_action :move_to_index, except: [:index, :show]
  def new
    @post = Post.new
    //新規作成された値は@postに入れる
  end
  //~省略~

これでform_for内で入力した値は@postに渡されます!
新規作成のフォームは完成したので次は編集する時のフォームの書き方。

編集のビュー部分の作成


edit.html.erb
<div class="contents row">
  <%=form_for @post, url => {action: 'update'} do |form|%>
  //form_forのupdateアクションを明示する為にaction:を指定
  <h5>タイトル</h5>
     <%= form.text_field :title, placeholder: 'title:最大文字数20文字まで' %>
   <h5>本文</H5>
     <%= form_text_field :content. placeholder 'content'%>
   <%= form.submit "SENT" %>
 <% end %>
</div>

次にcontrollerを編集する


posts_controller.rb
class PostsController < ApplicationController
  before_action :set_post, only: [:edit, :show]
  //共通のアクションはcallbackする為、before_action内に設定
〜省略〜
  def show
  end

  def edit
  end

  private

  def set_post
    @post = Post.find(params[:id])
  end

  def post_params
    params.require(:post).permit(:content, :title)
  end
end

以上でform_forでフォームの新規作成と編集ができるようになりました!

最後に


筆者について

TEXH::EXPERT渋谷校の夜間クラスで4月からRuby・Railsの学習をしています。
記載内容に不備・不足があればご指摘いただけると幸いです。
至らぬ点ばかりですので、改善点がありましたらどんどんご指摘下さい!

suzy1031
駆け出しエンジニア。ruby rails jQuery AWS Java React
https://suzyanamateurengineer.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした