私はゲーム終了後、すべてのユーザーのリーダーボードとその得点を表示するビューにリンクされている小さなゲームを持っています。これを行うには、リンクを更新アクションとして扱い、ゲームが終了した後にユーザーのスコアを更新できるようにしましたが、リンクをクリックすると、「paramが見つからないか、値が空です:ユーザー」というエラーが表示されます。私はまた、変数が更新されるだけでいっぱいになるフォームがないので、これが発生しているのかどうか疑問に思っています。ActionController :: ParameterMissing in UsersController#update
コントローラ:
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
session[:user_id] = @user.id
redirect_to '/play'
else
render '/'
end
end
def update
@user = User.find(current_user)
if @user.update(user_params)
redirect_to '/leaderboard'
else
render '/play'
end
end
private
def user_params
params.require(:user).permit(:nick_name, :score)
end
end
class ScoresController < ApplicationController
before_action :require_user, only: [:index]
def index
@user = User.find(current_user)
@score = @user.score
@score = 0
end
def leaderboard
@users = User.all
end
end
ビュー・リンク:
<div class="game-over"><%= link_to 'Game Over', "/update", :style => 'text-decoration:none; color:white;' %></div>
ルート:
Rails.application.routes.draw do
root 'users#new', as: :users
post '/' => 'users#create'
get '/logout' => 'sessions#destroy'
get '/play' => 'scores#index', as: :user
get '/update' => 'users#update'
get '/leaderboard' => 'scores#leaderboard'
あなたは 'crud'タスクに関するレールガイドを読んだとき、それは' update'は 'PATCH/PUT'ない' GET' http://guides.rubyonrails.org/routing.html#crud-verbsに対応することを言います-and-actions – mrvncaragay
patch/putを実行すると、no route matches [get]というエラーが表示されます。 – nums11