技術ブログ

(技術系中心)基本自分用備忘録なので、あくまで参考程度でお願いします。

form_forでインスタンス変数を使うと編集ページがうまく描画される

form_forでインスタンス変数を使うと編集ページがうまく描画される

@userインスタンス変数を使うと、編集ページがうまく描画されるようになります (下記図参照)。

"Name"や"Email"の部分を見ると、Railsによって名前やメールアドレスのフィールドに値が自動的に入力されていることがわかります。

これらの値は、コントローラで検索された@userから属性情報から引き出されているので自動的に表示されています。

app/controllers/users_controller.rb
.
.
.

  def edit 
    @user =User.find(params[:id])  <---ここでfindされたインスタンス変数の中身をview側で自動反映させている。
  end

f:id:lhiroki1205:20190201180643p:plain

<% provide(:title, "編集") %>

<div class="row">
  <div class="col-md-6 col-md-offset-3 hogehoge">
    <h1>プロフィールを編集</h1>

    <%= form_for(@user) do |f| %>
      <%= render 'shared/error_messages' %>

      <%= f.label :name %>
      <%= f.text_field :name, class: 'form-control' %>

      <%= f.label :email %>
      <%= f.email_field :email, class: 'form-control' %>

      <%= f.label :password %>
      <%= f.password_field :password, class: 'form-control' %>

      <%= f.label :password_confirmation, "Confirmation" %>
      <%= f.password_field :password_confirmation, class: 'form-control' %>

      <%= f.submit "送信", class: "btn btn-primary fomr_btn" %>
    <% end %>

  </div>
</div>