将多个参数传递给后端API reactjs(Pass multiple argument to back-end API reactjs)
我尝试从我的操作方法传递多个参数到后端的API函数。 使用我当前的代码,它确实创建了一条新记录,但传递的值是$ {name},$ {country},...所以我的客户端输入值无法正确传递到我的后端。
行动方法(客户端):
export const addNewBeer = (name,country,color, alcoholPercent) => async dispatch => { const res = await axios.post('/api/beers/add/${name}/${country}/${color}/${alcoholPercent}' ); }
在后端创建方法
app.post('/api/beers/add/:name/:country/:color/:alcoholPercent',requireLogin, (req, res) =>{ // const{name, country, color, alcoholPercent}= req.body; const name =req.params.name; const country = req.params.country; const color = req.params.color; // const alcoholPercent =req.params.alcoholPercent; const beer = new Beer({ name, country, color, // alcoholPercent });
I try to pass multiple argument from my action method to my API function in the back-end. With my current code, it does create a new record but the passed value are ${name}, ${country},... so my input value in the client doesn't pass correctly to my back-end.
action method (client side):
export const addNewBeer = (name,country,color, alcoholPercent) => async dispatch => { const res = await axios.post('/api/beers/add/${name}/${country}/${color}/${alcoholPercent}' ); }
create method in the back-end
app.post('/api/beers/add/:name/:country/:color/:alcoholPercent',requireLogin, (req, res) =>{ // const{name, country, color, alcoholPercent}= req.body; const name =req.params.name; const country = req.params.country; const color = req.params.color; // const alcoholPercent =req.params.alcoholPercent; const beer = new Beer({ name, country, color, // alcoholPercent });
原文:https://stackoverflow.com/questions/50585718
最满意答案
我终于找到了一个修复程序,它将参数清理程序直接放在users / invitations_controller.rb而不是application_controller.rb中。
class Users::InvitationsController < Devise::InvitationsController before_filter :configure_permitted_parameters, if: :devise_controller? private def configure_permitted_parameters devise_parameter_sanitizer.for(:accept_invitation) do |u| u.permit(:username, :name, :email, :password, :password_confirmation, :invitation_token) end end end
I finally found a fix, which was to place the parameter sanitizer directly in users/invitations_controller.rb instead of the application_controller.rb.
class Users::InvitationsController < Devise::InvitationsController before_filter :configure_permitted_parameters, if: :devise_controller? private def configure_permitted_parameters devise_parameter_sanitizer.for(:accept_invitation) do |u| u.permit(:username, :name, :email, :password, :password_confirmation, :invitation_token) end end end
相关问答
更多-
未经许可的参数载波(Unpermitted Parameter carrierwave)[2024-01-26]
答案是在controller = documents_attributes中将document_attributes更改为复数形式 The answer was to change document_attributes to plural in the controller = documents_attributes -
你需要以Rails的方式做到这一点...... 在models / order.rb中 class Order < ActiveRecord::Base has_many :products accepts_nested_attributes_for :products, allow_destroy: true end 在orders_controller.rb中 def order_params params.require(:order).permit(products_attribute ...
-
未授权的参数在rails 4.0中为Devise添加新字段(Unpermitted Parameters adding new fields to Devise in rails 4.0)[2022-09-06]
接受的解决方案是足够好的,但我看到两个问题:1)所有控制器将检查当前控制器是否是设计控制器( if: :devise_controller? )和2)我们需要在方法中写入所有可接受的参数( ...for(:sign_up) {|u| u.permit(:bio, :name)} ),甚至:email , :password等。 我认为一个更优雅的解决方案可能是: # app/controllers/users/registrations_controller.rb class Users::Registra ... -
感谢您对Devise Rails4分支的最新更新,并不需要插入“resource_params”。 我创建了一个全新的Rails4应用程序,并遵循基本的Devise安装步骤,我的应用程序正常工作,所以我认为,你做得很好。 但是有一个修改的要点,如果需要,可以给出一些关于允许参数的额外细节: 资料来源: https : //gist.github.com/bluemont/e304e65e7e15d77d3cb9 # controllers/users/registrations_controller.rb ...
-
设计不允许的params错误(Devise unpermitted params error)[2022-12-31]
如果控制器是设备控制器,则需要指定before_action回调以在Application Controller中调用configure_permitted_parameters方法 class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitte ... -
您是否尝试添加到ApplicationController? def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:username]) end Did you try to add to ApplicationController? def configure_permitted_parameters devise_parameter_sanitizer.permit(:sig ...
-
Devise :: InvitationsController报告未经许可的参数(Devise::InvitationsController reports Unpermitted parameters)[2022-09-01]
我终于找到了一个修复程序,它将参数清理程序直接放在users / invitations_controller.rb而不是application_controller.rb中。 class Users::InvitationsController < Devise::InvitationsController before_filter :configure_permitted_parameters, if: :devise_controller? private def configure ... -
您必须在已编写User.create(user_params)的控制器中添加它。 我假设UsersController。 class UsersController < ApplicationController def create User.create(user_params) end private def user_params #assumption: user params are coming in params[:user] params.require ...
-
检查您的用户模型,看看参数是否可访问。 请记住,您不需要为它们命名,IE我的User模型看起来像设计3和rails 4: class User < ActiveRecord::Base # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :register ...
-
Mongoid 6,Rails 5,HABTM“unpermitted parmeter”(Mongoid 6, Rails 5, HABTM “unpermitted parmeter”)[2022-04-19]
但是......我允许这个参数,对吧? 不完全的。 您允许user_ids作为数组。 但是你把它作为标量值发送。 对于强大的params而言,这是足够的差异,不让数据通过。 下定决心做任何一个(允许数组和发送数组)或另一个(允许标量和发送标量)。 But ... I'm permitting that parameter, right? Not quite. You're permitting user_ids as an array. But you send it as a scalar value. ...