ActionController :: ParameterMissing, когда параметр есть - PullRequest
0 голосов
/ 31 августа 2018

Так что я получаю эту ошибку по любой причине. Это говорит о том, что параметр «Пользователь» отсутствует, но я могу видеть это довольно ясно там Кроме того, я не уверен, почему параметр «user» указан дважды, а второй - пустым, но я предполагаю, что это является причиной его возникновения.

Started POST "/users" for 127.0.0.1 at 2018-08-30 21:56:48 -0700                                                       
Processing by UsersController#create as HTML               
  Parameters: {"params"=>{"user"=>{"username"=>"fsda", "first_name"=>"fdsa", "last_name"=>"fds", "email"=>"fdsa", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}}, "headers"=>{"Content-Type"=>"application/json"}, "user"=>{}}                                                        
Completed 400 Bad Request in 0ms (ActiveRecord: 0.0ms)     



ActionController::ParameterMissing (param is missing or the value is empty: user):                                     

app/controllers/users_controller.rb:18:in `user_params'    
app/controllers/users_controller.rb:4:in `create'          

Вот фрагмент кода, который выполняет вызов с отдельного сервера (клиент React)

 25     ax.post('/users', {                                                                                            |~                                                                                                                     
 26       params: {                                                                                                    |~                                                                                                                     
 27         user: this.state                                                                                           |~                                                                                                                     
 28       },                                                                                                           |~                                                                                                                     
 29       headers: {                                                                                                   |~                                                                                                                     
 30         "Content-Type": 'application/json'                                                                         |~                                                                                                                     
 31       }                                                                                                            |~                                                                                                                     
 32     })           

ax определено здесь в отдельном файле:

  1 import axios from 'axios';                                                                                    
  2                                                                                                                    
  3 export default axios.create({                                                                                
  4   baseURL: 'http://localhost:3000'                                                                                
  5 })  

А вот и контроллер Rails

 3   def create                                                                                                                                                                                                                              
  4     @user.new(user_params)                                                                                                                                                                                                                
  5     if @user.save                                                                                                                                                                                                                         
  6       json_response(@user, :created)                                                                                                                                                                                                      
  7     end                                                                                                                                                                                                                                   
  8   end                                                                                                                                                                                                                                     
  9                                                                                                                                                                                                                                           
 10   def show                                                                                                                                                                                                                                
 11     @user = User.find(params[:id])                                                                                                                                                                                                        
 12     render json: @user                                                                                                                                                                                                                    
 13   end                                                                                                                                                                                                                                     
 14                                                                                                                                                                                                                                           
 15   private                                                                                                                                                                                                                                 
 16                                                                                                                                                                                                                                           
 17   def user_params                                                                                                                                                                                                                         
 18     params.require(:user).permit(:username, :email, :first_name, :last_name, :password_digest)                                                                                                                                            
 19   end     

Извините за плохое форматирование. Копирование из vim действительно неудобно, если кто-то не знает лучшего способа сделать это.

РЕШЕНИЕ:

Изменить @user.new(user_params) на @user = User.new(user_params

Изменить params: { user: {...} } на user: {...}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...