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の使い方を知っているということは有利になるとのことでした。

 

それでは。

 

 

 

コメント

タイトルとURLをコピーしました