Rails - AJAX请求 - 未允许的参数,即使允许使用数组值

时间:2015-08-29 18:39:54

标签: ruby-on-rails ajax coffeescript

我正在尝试在更新特定选择时发送PATCH请求。

我的CoffeeScript代码是:

$(document).on 'change', '#mailchimp_list_select', ()->
    mailchimp_list_to_automatically_subscribe_people = $('#mailchimp_list_select').val()
    branch_id = $('#branch_id').val()
    $.ajax '/branches/'+branch_id+'.json',
        type: 'PATCH'
        data: {branch : {mailchimp_list_to_automatically_subscribe_people : mailchimp_list_to_automatically_subscribe_people}}
        dataType: 'text'
        error: (jqXHR, textStatus, errorThrown) ->
            $('body').append "AJAX Error: #{textStatus}"
        success: (data, textStatus, jqXHR) ->

我的控制器是

class BranchesController < ApplicationController
before_action :authenticate_user!
before_action :set_branch, only: [:show, :edit, :update]
respond_to :html, :xml, :json

def show
    respond_with(@branch)
end

def new
    @branch = Branch.new
    respond_with(@branch)
end

def edit
end

def update
    if @branch.update(branch_params)
        render nothing: true, status: :ok
        #CacheMailchimpListsJob.perform_later @branch.id
    else
        render nothing: true, status: :bad_request
    end
end

private
    def set_branch
        @branch = Branch.find(params[:id])
    end

    def branch_params
        params.require(:branch).permit(:mailchimp_list_to_automatically_subscribe_people, :name, :city, :country, :currency_id, :send_receipt, :address_line_1, :address_line_2, :address_line_3, :email, :legal_details, :legal_details_2, :custom_receipt_number, :mailchimp_api_key)
    end

    def cross_check_branch
        if @branch.id != session[:branch_id]
            redirect_to_root_path
        end
    end

我在控制台中收到错误消息:

Unpermitted parameter: mailchimp_list_to_automatically_subscribe_people

当我调整发送给它的JSON:

data: {mailchimp_list_to_automatically_subscribe_people : mailchimp_list_to_automatically_subscribe_people}

我收到此错误:

ActionController::ParameterMissing - param is missing or the value is empty: branch:

我做错了什么?

1 个答案:

答案 0 :(得分:0)

错误是参数mailchimp_list_to_automatically_subscribe_people接收的值是一个需要明确允许的数组,如mailchimp_list_to_automatically_subscribe_people[]