AR삽질러

Rails 一日一つメソッド (Day34) form_withメソッド 본문

Ruby/RubyOnRails-日本語

Rails 一日一つメソッド (Day34) form_withメソッド

아랑팡팡 2024. 2. 15. 19:05
728x90

 

Rails 一日一つメソッド (Day34) form_withメソッド

 

1. form_withメソッドとは

 - Rails5.1から導入され form_for, form_tagの機能を統合し、form_withで model formとmodelと関連がないFormを生成できる。 - form_withは情報を送信するためにヘルパーメソッドで、form_withを使うことによって、簡単に入力Formに必要なHTMLを作成する事ができる。

 

 1) 入力された情報をDataBaseに保存しない時

<%= form_with url: "Pass" do |form| %>
	<!-- 内容 -->
<% end %>

 

 2) 入力された情報をDataBaseに保存する時

<%= form_with model: modelcalssのインスタンス do |form| %>
	<!-- 内容 -->
<% end %>

 

<%= from_with model: @post do |form| %>
	<%= form.text_field :title %>
    <%= form.text_area :body %>
    <%= form.submit "sumbit" %>
<% end %>

 


2. form_withメソッド以前に使ったヘルパーメソッド

 

 1) form_tag

<%= form_tag('/main', method: :post) do %>
	<input type="text" name="nickname">
    <input type="submit">
<% end %>

 

 2) form_for

<%= form.for(@user) do |f| %>
	<%= f.text_field :name %>
    <%= f.submit %>
<% end %>

 


3. form_withの基本使い方

 

 1) modelオプション

<%= form_with model: ModelClassのインスタンス do |form| %>
	<!-- 内容 -->
<% end %>

 

 

 2) urlオプション

<%= form_with url: "Pass" do |form| %>
	<!-- 内容 -->
<% end %>

 

<%= form_with url: root_path do |form| %>
	<!-- 内容 -->
<% end %>

form_with引数

  

 1) model 

  - Formと繋がるModelのオブジェクトを指定する。form_withは自動にmodelの状態(新しいレコードなのか、既存のレコードなのか、など)を判断し、URLとHTTPメソッドを推論する。

# Controller
def new
	@user = User.new
end

 - Controllerで作成したインスタンスが newメソッドで新たに作成されて情報が何もない場合は、create, findアクションなどで作成される。

 - 情報を持っている場合は、updateアクションへ自動的に振り分けてくれる。

 

# View
<%= form_with model: @post do |form| %>
	<%= form.text_field :title %>
    <%= form.text_area :body %>
    <%= form.submit "submit" %>
<% end %>
728x90
반응형
LIST