これから作っていく簡単なWebアプリの作成メモ(自分の備忘)です。
自分用なのであまり凝りすぎないように書いていきたい。
##今回やったこと
###ユーザーの編集
前回に引き続き、ユーザーのデータを編集できるようにしていく。
app/controllers/users_controller.rb
(略)
def edit
@users = User.find(params[:id])
end
def update
@users = User.find(params[:id])
if @users.update(users_params)
redirect_to user_path(@users), notice: "ユーザーを編集しました。"
else
render :edit
end
end
(略)
app/views/users/edit.html.erb
<h1>ユーザーの編集</h1>
<div class="row_line">
<%= link_to 'ユーザー一覧へ', users_path, class: 'btn btn-primary' %>
</div>
<%= form_for @users, url: {action: "update", id: @users.id} do |f| %>
<div class="row_line">
<label>ユーザー名:</label>
<%= f.text_field :name %>
</div>
<div class="row_line">
<label>メールアドレス:</label>
<%= f.email_field :email %>
</div>
<div class="row_line">
<label>パスワード:</label>
<%= f.password :password %>
</div>
<div class="row_line">
<label>パスワード(確認欄):</label>
<%= f.password_confirmation :password_confirmation %>
</div>
<div class="row_line">
<%= f.submit "保存する" %>
</div>
<% end %>
app/views/users/index.html.erb
(略)
<tbody>
<% @users.each do |lst| %>
<tr class="clickable-row" data-href="<%= user_path lst.id %>">
(略)
この段階で動作を見てみると、以下のようになった。
ちなみにこの段階では、パスワードを入力しないとユーザー情報を変更できない。
これは今後の課題にしたい。
...また、意図していないことだったが、ユーザー用のjavascriptを用意しなくともユーザー一覧のテーブルの行をクリックするとユーザー詳細画面に遷移できてしまった。
これは現状でどの画面でもschedules.jsが読み込まれており、スケジュールの実装の時と同様にクラスやデータ属性を整えると、同じように遷移できてしまうようになっていることが原因。
→理想的には、全画面共通のjavascriptが基本処理としてあり、そこに画面ごとに個別処理のjavascriptを使って実装を進めるのが良いと思う。
時間もなかったので今回はここまで。