Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails强参数无法识别通过Ajax Post发送的参数_Javascript_Jquery_Ruby On Rails_Ruby_Ajax - Fatal编程技术网

Javascript Rails强参数无法识别通过Ajax Post发送的参数

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':

您好,我正在尝试将以下参数从前端发送到我的后端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
        });
    }); 
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):