🐕‍🦺

管理者側:会員機能

2024/06/27に公開

ポートフォリオで使うだろうなと思ったので、復習。

今回、名前を"last_name" "first_name"に分割していて、
full_nameでモデルに定義したら、使えるみたいだったけど、
ちょっと余計なことはあんまりしたくなかったので、あえてそのままにした。

  • 会員一覧画面(管理者)
  • 会員詳細画面(管理側)
  • 会員詳細画面

ルーティング

config/routes_rb
:
namespace :admin do
 resources :customers, only: [:index, :show, :edit, :update]
end
:

コントローラー

他のコードは自分のcloud9で確認。
"update"のストロングパラメーターだけ確認のため。

 def customer_params
    params.require(:customer).permit(:last_name, :first_name, :last_name_kana, :first_name_kana, :post_code, :address, :phone_number, :email, :is_active)
  end

最後のis_activeが会員ステータスのカラム

ビュー(会員一覧)

admin/customers/index.html.erb
<td>
            <% if customer.is_active == false %>
              <strong class="text-secondary">退会済</strong>
             <% else %>
              <strong class="text-success">有効</strong>
              <% end %>
            <% end %>

ビュー(会員詳細)

admin/customers/show.html.erb
:
<p class="my-3"><strong>会員ステータス</strong><%= @customer.is_active ? 'green' : 'gray' %>;"><%= @customer.is_active ? '有効' : '退会済' %></span></p>
:

@customer = Customer.find(params[:id])で定義
is_activeはカラムで指定したもの
"有効" = green
"退会" = gray

ビュー(会員編集ページ)

admin/customers/edit.html.erb
<td class="custom-control custom-radio custom-control-inline">
  <%= f.radio_button :is_active, true, checked: @customer.is_active == true, class: 'custom-control-input', id: 'status-active' %>
  <%= f.label :is_active, '有効', class: 'custom-control-label', for: 'status-active' %>
</td>

<td class="custom-control custom-radio custom-control-inline">
  <%= f.radio_button :is_active, false, checked: @customer.is_active == false, class: 'custom-control-input', id: 'status-deleted' %>
  <%= f.label :is_active, '退会済', class: 'custom-control-label', for: 'status-deleted' %>
</td>

<%= f.radio_button :is_active,true... %>
is_activeに対するラジオボタンを作ってくれる。

checked: @customer.is_active == true
is_active属性が"true"の場合、このラジオボタンがチェックされるように設定している。

class: '@custom-control-input'
bootstrapのカスタムコントロールクラスを適用してる。

id: 'status-active'
ラジオボタンのid。次に記載しているlabelと関連づけるために使う。

<%= f.label :is_active, '有効'... %>
ラジオボタンに対応するラベルを作る。

for: 'status-active'
関連づけられるラジオボタンのid。

私はこの時に思った。
モデルに定義した方が、楽だったのでは...

https://zenn.dev/ganmo3/articles/1d8486cff7f598
参考にさせていただきました。(モデルに定義して、ビューで呼び出すやり方)

Discussion