我正在尝试通过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
如何使它与强参数一起使用?
答案 0 :(得分:1)
我想知道问题是否在于allow函数的参数应该是一个或多个标量值(或数组),而不是对象?根据{{3}}
要将整个参数哈希表列入白名单,请允许!可以使用方法
a b c
您可以尝试
params.require(:log_entry).permit!
(如果您还没有的话),看看是否可以解决。否则,上面的链接上有很多文档可能会有所帮助。如果仍然遇到问题,请尝试从上面的tweets.rb文件中发布代码,以便其他人可以进行测试。