ラズベリーパイからのプットリクエストの解析と取得に問題があり、ウェブサイトのデータを送信しています。
コントローラーが下にあるワーカーモデルのいくつかのフィールドを更新しようとしています
class WorkersController < ApplicationController
def new
@worker = Worker.new
@user = User.find(params[:user_id])
end
def create
@user = User.find(params[:user_id])
@worker= Worker.new(params[:worker])
@worker.user_id= @user.id
if @worker.save
flash[:success] = "Worker information saved!"
redirect_to @user
else
render 'new'
end
end
def show
end
def update
@user = User.find(params[:user_id])
@worker = Worker.find(params[:id])
@MHS = params[:SUMMARY][:MHS_av]
@worker.hashrate = @MHS
@worker.save
end
end
以下はサーバー側の受信プットリクエストです
Started PUT "/users/1/workers/1" for xxx.xxx.xx.xxx at 2013-06-13 03:06:02 +0000
Processing by WorkersController#update as XML
ここにパラメータがあります
Parameters: {"STATUS"=>[{"STATUS"=>"S", "When"=>1371092750, "Code"=>11, "Msg"=>"Summary", "Description"=>"cgminer 3.1.1"}], "SUMMARY"=>[{"Elapsed"=>60394, "MHS av"=>1.92, "Found Blocks"=>1, "Getworks"=>1217, "Accepted"=>9104, "Rejected"=>138, "Hardware Errors"=>0, "Utility"=>9.04, "Discarded"=>2428, "Stale"=>20, "Get Failures"=>1, "Local Work"=>9513, "Remote Failures"=>0, "Network Blocks"=>458, "Total MH"=>116212.6295, "Work Utility"=>1769.84, "Difficulty Accepted"=>1747840.0, "Difficulty Rejected"=>26496.0, "Difficulty Stale"=>3840.0, "Best Share"=>74960510}], "id"=>"1", "user_id"=>"1", "worker"=>{}}
これらのエラーが続きます
WARNING: Can't verify CSRF token authenticity
at=info method=PUT path=/users/1/workers/1 host=miningmonitor.herokuapp.com fwd="xxx.xxx.xx.xxx" dyno=web.1 connect=1ms service=1029ms status=500 bytes=643
TypeError (can't convert Symbol into Integer):
app/controllers/workers_controller.rb:27:in `[]'
Completed 500 Internal Server Error in 345ms
app/controllers/workers_controller.rb:27:in `update'
Ruby on rails は着信メッセージが XML であると考えているようですが、その JSON は、この put リクエストが JSON であることをどこかに指定する必要がありますか? また、Ruby on rails は JSON を解析してパラメーターに変換するだけで、パラメーターからデータを取得できると言われましたが、それは本当ですか?
レイアウトからの application.html.erb からのコンテンツの追加
<head>
<title>Mining Monitoring Website</title>
<%= stylesheet_link_tag "application", media: "all"%>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
<%= render 'layouts/shim' %>
</head>