게임을 끝낸 후에 모든 사용자의 리더 보드와 점수를 표시하는 작은 게임이 있습니다. 이렇게하려면 업데이트 동작으로 링크를 처리하여 게임이 끝난 후 사용자 점수를 업데이트 할 수 있도록했지만 링크를 클릭하면 "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'
그것은 update'는'패치/PUT'이 아닌'get' 대응 '한다는 http://guides.rubyonrails.org/routing.html#crud-verbs 말한다 -and-actions – mrvncaragay
patch/put을 넣으면 경로가 [get]과 일치하지 않는다는 오류가 발생합니다. – nums11