@k12da (K Yoshida)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

ユーザー削除用リンクが実装されない

ユーザーindexページに削除用のリンクを追加したい

railsチュートリアル 10.4.2destroyアクションのところです。

管理者のみに表示されるユーザー削除リンクを追加したいです。

発生している問題・エラー

エラーメッセージなどは出ていないのですが、管理者ページへのアクセスが間違っていることが考えられます。

今は、/usersで下記のスクショのようなユーザー一覧ページを表示させています。

スクリーンショット 2022-06-24 7.15.41.png

関連するソースコード

app/views/users/_user.html.erb
<li>
  <%= gravatar_for user, size: 50 %>
  <%= link_to user.name, user %>
  <% if current_user.admin? && !current_user?(user) %>
    | <%= link_to "delete", user, method: :delete,
                                  data: { confirm: "You sure?" } %>
  <% end %>
</li>
app/controllers/users_controller.rb
class UsersController < ApplicationController
  before_action :logged_in_user, only: [:index, :edit, :update, :destroy]
  before_action :correct_user,   only: [:edit, :update]
  before_action :admin_user,     only: :destroy
  
  def index
    @users = User.paginate(page: params[:page])
  end
  
  def show
    @user = User.find(params[:id])
    #debugger
  end
  
  def new
    #debugger
    @user = User.new
  end
  
  def create
    @user = User.new(user_params)
    if @user.save
      log_in @user
      flash[:success] = "Welcome to the Sample App!"
      redirect_to @user
    else
      render 'new'
    end
  end
  
  def edit
    @user = User.find(params[:id])
  end
  
  def update
    @user = User.find(params[:id])
    if @user.update(user_params)
      flash[:success] = "Profile updated"
      redirect_to @user
    # 更新に成功した場合を扱う。
    else
      render 'edit'
    end
  end
  
  def destroy
    User.find(params[:id]).destroy
    flash[:success] = "User deleted"
    redirect_to users_url
  end
(以下省略)
end

ユーザー削除リンクや、destroy アクションなどは実装しています。

0 likes

1Answer

Comments

  1. @k12da

    Questioner

    @syutorum001
    解決しました、ありがとうございます!
    admin属性はtrueになっています。
    db/seed.rbで記述した、"Example User"でログインしたら表示されました。
  2. 「db/seed.rbで記述した、"Example User"でログインしたら表示されました。」
    それはつまり…

    「ログインしているユーザのadmin属性はtrueになっていますか?」
    => 「admin属性はtrueになっています。」

    ではなく、単にadmin属性がfalseになってただけではないでしょうか…
    解決したのなら良いのですが。
  3. @k12da

    Questioner

    下記のユーザーでログインしたらできました。
    別のユーザーでログインしていたため、削除リンクが表示されなかっただけでした
    ```
    # メインのサンプルユーザーを1人作成する
    User.create!(name: "Example User",
    email: "example@railstutorial.org",
    password: "foobar",
    password_confirmation: "foobar",
    admin: true,
    activated: true,
    activated_at: Time.zone.now)
    ```

Your answer might help someone💌