簡體   English   中英

HTTParty不在POST請求中發送對象參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM