Javascript Rails强参数无法识别通过Ajax Post发送的参数
您好,我正在尝试将以下参数从前端发送到我的后端rails控制器,在那里我设置了强参数 我的ajax调用如下所示Javascript Rails强参数无法识别通过Ajax Post发送的参数,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,您好,我正在尝试将以下参数从前端发送到我的后端rails控制器,在那里我设置了强参数 我的ajax调用如下所示 $("#send").click(function() { var message = $("#message").val(); var listing_id = $("#listing_id").val(); d = { 'message': message, 'listing_id':
$("#send").click(function() {
var message = $("#message").val();
var listing_id = $("#listing_id").val();
d = {
'message': message,
'listing_id': listing_id,
'status': "pending"
};
$.ajax({
type: "POST",
url: "/crecits",
data: d
});
});
class CrecitsController < ApplicationController
..
def create
@crecit = current_user.crecits.new(crecits_params)
respond_to do |format|
if @crecit.save
format.html { redirect_to @crecit, notice: 'Request Sent' }
else
format.html { redirect_to listings_path, notice: 'your request can not be sent' }
end
end
end
private
def crecits_params
params.require(:crecit).permit(:user_id, :status, :listing_id, :message)
end
..
end
这将向控制器发送以下参数
Parameters: {"message"=>"Hello world", "listing_id"=>"1", "status"=>"some status"}
然后我处理这个的控制器看起来像这样
$("#send").click(function() {
var message = $("#message").val();
var listing_id = $("#listing_id").val();
d = {
'message': message,
'listing_id': listing_id,
'status': "pending"
};
$.ajax({
type: "POST",
url: "/crecits",
data: d
});
});
class CrecitsController < ApplicationController
..
def create
@crecit = current_user.crecits.new(crecits_params)
respond_to do |format|
if @crecit.save
format.html { redirect_to @crecit, notice: 'Request Sent' }
else
format.html { redirect_to listings_path, notice: 'your request can not be sent' }
end
end
end
private
def crecits_params
params.require(:crecit).permit(:user_id, :status, :listing_id, :message)
end
..
end
class-CrecitsController
如果您有如下参数:
params.require(:crecit).permit(:user_id, :status, :listing_id, :message)
{
crecit: {
user_id: ...,
status: ...,
etc
}
}
这需要你的参数像这样进来:
params.require(:crecit).permit(:user_id, :status, :listing_id, :message)
{
crecit: {
user_id: ...,
status: ...,
etc
}
}
但是,AJAX发送参数时没有外部crecit
散列
您可以更改AJAX数据以发送嵌套哈希,也可以保持不变,而是删除
.require(:crecit)
。也就是说,它只是params.permit(:user_id,:status等)
更新:下面是我收到的错误消息ActionController::ParameterMissing(param缺失或值为空:crecit):