kyopa’s blog

自分用プログラミングアウトプット

fields_for

fields_for

Rails で2つ以上の種類のモデルのオブジェクトの情報を、1つのフォームで編集して送信したい場合、fields_for メソッドを使うと実現できる。



<h1 class="sign_main">新規登録</h1>

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autocomplete: "name" %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
</div>

<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "new-password" %>
</div>

<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
</div>
<div class="avatar">
<%= f.label :profile_image %>
<%= f.file_field :avatar, id: :feed_avatar %>
</div>

 

<%= fields_for(@target) do |target| %>
<div class="Target_content">
<%= target.label :目標設定 %>
<%= target.text_field :content %>
</div>
<div class="Target_point">
<%= target.label :ポイント設定 %>
<%= target.select :point, [["30", "30"], ["100", "100"], ["200", "200"], ["300", "300"], ["400", "400"],["500", "500"], ["1000", "1000"]], :prompt => "選択してください" %>
</div>
<div class="target_image">
<%= target.label :画像投稿 %>
<%= target.file_field :image %><br>
</div>
<% end %>

 

 


<div class="actions">
<center><button type="submit" class="btn btn-info">登録完了</button></center>
</div>
<% end %>
<!--<%#= render "devise/shared/links" %>-->