【发布时间】:2014-07-31 19:24:08
【问题描述】:
我有一个向 Rails 服务器发送 http 请求的 Angular 应用程序。我想请求创建一条记录(在 SavedQueries 表中)。
Angular 应用程序现在实际上正在发出一个非常简单的 http 请求,例如
$.post('http://10.241.16.159:3000/api/save_query', {'saved_query':1});
那个 javascript 请求被路由到这个 Rails 动作:
def create
@saved_query = SavedQuery.new(params[:saved_query])
if @saved_query.save
render json: @saved_query, status: :created, location: @saved_query
else
render json: @saved_query.errors, status: :unprocessable_entity
end
end
但是,rails 服务器没有返回适当的 json,而是记录了 500 错误:
Started POST "/api/save_query" for 172.25.82.146 at 2014-07-31 19:14:06 +0000
Processing by SavedQueriesController#create as */*
Parameters: {"saved_query"=>"1"}
Completed 500 Internal Server Error in 0ms
ArgumentError (When assigning attributes, you must pass a hash as an argument.):
app/controllers/saved_queries_controller.rb:21:in `create'
所以我的问题是,很明显,通过查看 Rails 服务器的日志,我们可以看到传递的参数是一个散列,但抛出的 ArgumentError 表明问题是必须将散列作为参数传递。
我在这里错过了什么?
【问题讨论】:
标签: javascript ruby-on-rails ruby angularjs