您好我正在尝试将以下参数从前端发送到我的后端rails控制器,我设置了强大的参数 我的ajax调用看起来像这样
$("#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
});
});
这是将以下参数发送到控制器
Parameters: {"message"=>"Hello world", "listing_id"=>"1", "status"=>"some status"}
然后处理此问题的控制器看起来像这样
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
答案 0 :(得分:2)
如果你有这样的参数:
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, etc)