[英]HTTParty not sending object parameters in POST request
我正在為我用來使創建新用戶更有效的服務構建一個基本的管理導軌應用程序。 現在,我正在應用程序中手動執行此操作,並且它具有一些想要自動化的乏味步驟。
該服務將用戶視為“會員”
因此,我在rails項目中創建了一個Member支架,該支架的參數與Service中的成員相同。
我不想在Service應用程序中輸入一些數據,而是希望在我的應用程序中進行輸入。 所以我有一個帶有幾個參數的表單,這些表單創建一個Member並保存這些參數:usname :usemail :usstudio_uid
接下來,我想使用輸入的初始字段將服務發布到服務API,以為新成員創建“邀請”。
我正在嘗試通過在“會員的顯示”視圖中調用HTTParty函數來做到這一點。
我的表單正確保存了參數,我通過HTTParty連接到Service API並創建了一個邀請OK,但是我要發送的Member參數沒有填充。 相反,它轉向了我認為純文本中對參數的引用。
該功能的代碼段:
:body => {"callback_url" => "https://foo.com/#invitations", "consumer_key" => "my consumer_key", "email" => :usemail,
我希望:usemail引用在顯示頁面中引用的成員的參數(例如,懸崖@ foo.com)。 相反,正如您將在下面看到的那樣,Service API認為該參數是字符串,返回“ usemail”作為email參數,而不是我要引用的Member對象的參數。
我對Rails和編碼還很陌生,所以這可能是一個很明顯的答案,但是昨天我花了6個小時努力弄清楚。 救命! :)
Members.rb模型:
class Member < ActiveRecord::Base
end
Members_controller rb:
Class MembersController < ApplicationController
before_action :set_member, only: [:show, :edit, :update, :destroy]
respond_to :html
def index
@members = Member.all
respond_with(@members)
end
def show
@member = Member.find(params[:id])
end
def new
@member = Member.new
respond_with(@member)
end
def edit
respond_with(@member)
@member.save
end
def create
@member = Member.new(member_params)
@member.save
respond_with(@member)
end
def update
@member.update(member_params)
respond_with(@member)
end
def destroy
@member.destroy
respond_with(@member)
end
private
def set_member
@member = Member.find(params[:id])
end
def member_params
params.require(:member).permit(:usname, :usemail, :usphone, :uspassword, :usconfirm_password, :usinvitation_uid, :usstudio_uid, :uscallback_url, :usmember_uid, :ususername, :usaccess_token)
end
end
在我的members_helper.rb中:
def getinvitation(member)
result = HTTParty.post "https://foo.com/api/v2/studios/studio_uid/invitations", :body => {"callback_url" => "https://foo.com/#invitations",
"consumer_key" => "my consumer_key", "email" => :usemail,
"name" => :usname, "studio_uid" => :usstudio_uid
}.to_json, :headers => {'X-Auth-Token' => "my token"}
JSON.parse(result.body)
x = ActiveSupport::JSON.decode(result.body)
end
我在成員的show路徑中調用該函數:
views/members/show.html.erb
<%= getinvitation(@member) %>
這是我得到的答復:
{"uid"=>"29ad0740f4aa47d788bb2a34e9ab7d78", "studio_uid"=>"ORfspJitFbVG",
"date_sent"=>"Sun Feb 1 16:49:21 2015", callback_url"=>"https://app.ustudio.com/#invitations?
invitation_uid=29ad0740f4aa47d788bb2a34e9ab7d78&studio_uid=ORfspJitFbVG",
"consumer_key"=>"my consumer_key", "email"=>"usemail", "name"=>"usname"}
基本上,這就是我想要的
"email" => member.usemail
不是:usemail
或"usemail"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.