我是Rails的新手,我正在尝试在rails中创建一个引擎。关键是以这种格式{city: "Berlin", country: "Germany"}
将JSON数据发送到应用程序并接收相同的JSON,但使用反向值,如{city: "nilreB"}
等等。
我的路线是:
Rails.application.routes.draw do
post "collect/data" => 'data#create'
end
我的控制器是:
class DataController < ApplicationController
def create
render text: "#{request.body}"
end
end
我知道控制器根本没有完成,但我想知道为什么我在发出POST请求时遇到HTTP错误:
curl -v -d '{"key1":"value1", "key2":"value2"}' http://0.0.0.0:3000/collect/data --header "Accept: application/json" --header "Content-Type: application/json"
HTTP / 1.1 204无内容
我已经读过使用Rails 5时很好,我正在使用它。所以我的问题是我在控制器或其他地方遗漏了什么?我将非常感谢任何帮助。
这些是日志:
INFO -- : [df2105a8-e2c5-4e27-a9c7-ffc91c8b92e8] Started POST "/collect/data" for 127.0.0.1 at 2018-02-09 20:26:49 +0000 INFO -- : [df2105a8-e2c5-4e27-a9c7-ffc91c8b92e8] Processing by DataController#create as JSON INFO -- : [df2105a8-e2c5-4e27-a9c7-ffc91c8b92e8] Parameters: {"key1"=>"value1", "key2"=>"value2", "datum"=>{"key1"=>"value1", "key2"=>"value2"}} INFO -- : [df2105a8-e2c5-4e27-a9c7-ffc91c8b92e8] No template found for DataController#create, rendering head :no_content INFO -- : [df2105a8-e2c5-4e27-a9c7-ffc91c8b92e8] Completed 204 No Content in 1ms
答案 0 :(得分:0)
由于@ma_il说我的参数在DataController中可以作为params[:datum]
使用,我在Rails 5.1中搜索了更多关于params的信息,我正在使用它并发现我的完整版本是:
def create my_hash = params[:datum].permit! render json: my_hash.to_h.collect { |keys, values| "#{keys}{values.reverse}" } end