javascript - Rails Strong Params 无法识别通过 Ajax Post 发送的参数

标签 javascript jquery ruby-on-rails ruby ajax

你好,我正在尝试将以下参数从前端发送到我设置了强大参数的后端 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/

相关文章:

ruby-on-rails - rails : Dynamic Select with Active Record

ruby-on-rails - Twitter gem 搜索方法

javascript - 在 javascript/jquery 中读取文件

javascript - react 响应式,在函数中使用而不是在 jsx 中

jquery - 如何使这个 jQuery 代码片段在 Internet Explorer 中工作?

jquery - jest 在调用 jquery 选择器的第三方函数上失败

ruby-on-rails - capistrano + git 部署 : could not create work tree dir : Permission denied

javascript - 如何使用 jQuery 在 IE 中滚动到页面顶部

javascript - 如何迭代 `address_component` 以获得 `country` 或任何

ajax - 循环内的 jQuery.ajax()