通过带有强参数的ajax调用获取“ NoMethodError”,但没有它也可以正常工作

时间:2018-11-24 05:32:39

标签: ajax reactjs ruby-on-rails-5

我正在尝试通过ajax调用使用强参数,并且我得到NoMethodError (undefined method 'permit' for ...)的以下代码:

ajax通话

onSubmit(value) {
  const url = '/tweets/create';
  $.ajax({
    url: url,
    dataType: 'text',
    type: 'POST',
    cache: false,
    data: {
      tweet: value
    },
    success: (data) => {
      // whatever
    },
    error: (xhr, status, err) => {
      console.error(url, status, err.toString());
    },
  });
}

tweets_controller.rb

def create
  tweet = Tweet.new(create_params)
  tweet.save
end

private
  def create_params
    params.require(:tweet).permit(:tweet)
  end

tweet.rb

  belongs_to :user

  validates :tweet, { presence: true }

但是,如果我不对以下相同的ajax调用使用强参数,则效果很好:

def create
  tweet = Tweet.new(tweet: params[:tweet])
  tweet.save
end

如何使它与强参数一起使用?

1 个答案:

答案 0 :(得分:1)

我想知道问题是否在于allow函数的参数应该是一个或多个标量值(或数组),而不是对象?根据{{​​3}}

  

要将整个参数哈希表列入白名单,请允许!可以使用方法

     

a b c

您可以尝试

params.require(:log_entry).permit!

(如果您还没有的话),看看是否可以解决。否则,上面的链接上有很多文档可能会有所帮助。如果仍然遇到问题,请尝试从上面的tweets.rb文件中发布代码,以便其他人可以进行测试。