你好,我正在尝试将以下参数从前端发送到我设置了强大参数的后端 Rails Controller 我的 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
});
});
这是向 Controller 发送以下参数
Parameters: {"message"=>"Hello world", "listing_id"=>"1", "status"=>"some status"}
然后我处理这个的 Controller 看起来像这样
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
最佳答案
如果你有这样的参数:
params.require(:crecit).permit(:user_id, :status, :listing_id, :message)
这需要你的参数像这样进来:
{
crecit: {
user_id: ...,
status: ...,
etc
}
}
但是,您的 AJAX 发送的参数没有外部 crecit
哈希。
您可以更改 AJAX 数据以发送嵌套哈希,或者保持不变并删除 .require(:crecit)
。 IE。它只是 params.permit(:user_id, :status, etc)
关于javascript - Rails Strong Params 无法识别通过 Ajax Post 发送的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41204815/