【发布时间】:2014-11-18 21:41:04
【问题描述】:
我想将 json 发布到 rails 控制器,然后通过单独的控制器将每个 json 保存到数据库。
为此,我将此 json 发布到 rails 控制器:
jsonList = {
"table": {column1:"column1",column2:"column2"},
"record": {name:"record 1"}
};
并在 Rails 控制器中收到以下 json:
Started POST "/api/calculate.json" for 127.0.0.1 at 2014-11-19 00:52:13 +0330
Processing by Api::V1::CalculateController#create as JSON
Parameters: {"table"=>{"column1"=>"column1", "column2"=>"column2"}, "record"=>{"name"=>"record 1"}, "calculate"=>{"table"=>{"column1"=>"column1", "column2"=>"column2"}, "record"=>{"name"=>"record 1"}}}
但是在我做任何事情之前,我在 Rails 服务器日志中得到以下错误:
Completed 500 Internal Server Error in 2ms
ActionView::MissingTemplate (Missing template api/v1/calculate/create, api/v1/base/create with {:locale=>[:en], :formats=>[:json], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in:
* "/Users/mgh/Documents/Maliat/sama/app/views"
):
actionview (4.1.6) lib/action_view/path_set.rb:46:in `find'
actionview (4.1.6) lib/action_view/lookup_context.rb:124:in `find'
actionview (4.1.6) lib/action_view/renderer/abstract_renderer.rb:18:in `find_template'
actionview (4.1.6) lib/action_view/renderer/template_renderer.rb:41:in `determine_template'
我搜索此错误,但没有找到任何有用的指南。
RailsController:
class Api::V1::CalculateController < Api::V1::BaseController
require 'json'
def create
....
end
end
我还有一个问题。我想通过单独的控制器将每个 json 保存到数据库中。例如,我有一个 RecordController 并通过以下代码使用 create 操作:
def create
temp = Record.new(params[:record])
temp.save
end
这种类型:
def create
temp = Record.create(params[:record])
end
但我在服务器日志中收到以下错误:
ActiveModel::ForbiddenAttributesError (ActiveModel::ForbiddenAttributesError):
app/controllers/api/v1/calculate_controller.rb:6:in `create'
RecordController:
class Api::V1::RecordController < Api::V1::BaseController
require 'json'
def create
@data = Record.create(record_params)
@data.save
respond_with(@data)
end
private
def record_params
params.require(:record).permit(:name)
end
end
我该如何解决这个问题?
【问题讨论】:
-
你能给我模型(计算)字段和结构吗?您必须在哪个表中存储表格和记录内容。
-
我没有
calculate Model,我只想在这个控制器中从客户端获取json,并使用其他控制器将数据保存在json中,比如我发布的record。注意:我在客户端使用 angularjs。 -
所以这是 json { "table": {column1:"column1",column2:"column2"}, "record": {name:"record 1"} };你想在哪里存储到数据库???
-
起初我想要单独的 2 个 json,然后将它们分别发布到特殊的控制器中。例如,我想通过 RecordController 将
"record":{name:"record 1"}保存在数据库中,我将这个控制器置于问题中,并使用与RecordController相同的控制器保存"table"。
标签: ruby-on-rails json ruby-on-rails-4