プログラミング勉強中!!

TECH::EXPERT 40期 受講生の筆者がその日学んだことをアウトプットしていくブログです。学習量によっては全て書ききれないこともあります。お気付きのことありましたバシバシコメントください!!3月中旬よりWEBエンジニアとして働くことになりました。日々の業務などについても発信させていただきたいと思います!!よろしくお願いいたします!!

form_for使い方

はい、こんばんは。

本日は早めの時間での更新となります。

 

DB設計の添削を待っている間にアウトプットです。

 

本日もアプリ開発に着手しておりました。

 

本日はform_forを用いてアプリ投稿画面を作りました。

 

これまではform_tagを用いて投稿画面を実装していたため、form_forでの実装に戸惑いましたが、なんとか理解(!!)できたのでここに記載します。

 

ひな形

new.html.erbにて編集しています。

<%= form_for ※モデルクラスのインスタンス do |f| %>

<%= f.label :name%>

<%= f.text_field :name %>

<%= f.label :image_URL %>

<%= f.text_field :Image %>

<%= f.label :text %>

<%= f.text_area :text, style:"width: 100%;height:100%;" %>
<%= f.submit "投稿する" %>

<% end %>

 

上記の解説をしていきます。

<%= form_for ※モデルクラスのインスタンス do |f| %>

 

上記の※ですが、モデルクラスのインスタンスとありますが、自身のcontroller内にある、newメソッドを定義している部分から引っ張ってくる。私の場合、下記のように定義していた。

def new

@tweet = Tweet.new

end

実際のコードを書くと

<%= form_for @tweet do |f| %>となる。@tweetにはTweet.newが代入されているので、新しいインスタンスを生成するという意味になる。

※ここでTweetとは、Tweetクラスで作成しているため、ご自分で試される場合は作成されたコントローラ名を入れることとなる。

 

これで、Tweetコントローラないで定義されているnewの中の@tweetを見にいきなさいという意味になります。

 

2行目 <%= f.label :name%>

3行目 <%= f.text_field :name %>

 

これは名前を記述してもらうフォームを作成しました。

 

f.label・・・名前入力欄上にnameと表示させる。※表示させる言葉は:以下、自分で決める。私の場合、nameと書いているため、nameと表示させると記述した。

f.text_field・・・入力欄を作成するためのコード。

 

4行目 <%= f.label :image_URL %>

5行目 <%= f.text_field :Image %>

 

画像投稿欄を作成しました。

 

6行目 <%= f.label :text %>

7行目 <%= f.text_area :text, style:"width: 100%;height:100%;" %>
8行目 <%= f.submit "投稿する" %>

 

 テキスト入力画面を作成しました。

 

※f.submit・・・投稿するボタンの生成

 

ということで、本日はform_forについて解説いたしました。

 

ショックなことに、今後はform_forよりform_withが主流になってくるとのことです。

 

しかし、form_forとform_withは似ているので、form_forの使い方を知っているということは有利になるとのことでした。

 

それでは。