【问题标题】:HTTParty not sending object parameters in POST requestHTTParty 不在 POST 请求中发送对象参数
【发布时间】:2015-02-01 17:42:02
【问题描述】:

我正在为一项服务构建一个基本的管理轨道应用程序,以提高创建新用户的效率。现在,我是在应用程序中手动完成的,它有一些我想自动化的繁琐步骤。

服务将用户视为“会员”

所以我在我的 rails 项目中创建了一个 Members 脚手架,其参数与成员在 Service 中的参数相同。

我不想在服务应用程序中输入一些数据,而是想在我的应用程序中执行此操作。所以我有一个包含几个参数的表单,这些参数创建一个成员并保存这些参数::usname :usemail :usstudio_uid

接下来,我想使用为新成员创建“邀请”而输入的初始字段发布到服务 API。

我试图通过在我的 Member's Show 视图中调用 HTTParty 函数来做到这一点。

我的表单正在正确保存参数,我正在通过 HTTParty 连接到服务 API 并创建邀请,但我要发送的成员参数没有填充。相反,它正在将我认为是对纯文本参数的引用转变。

该函数的片段:

:body => {"callback_url" => "https://foo.com/#invitations", "consumer_key" => "my consumer_key", "email" => :usemail,

我希望 :usemail 引用在显示页面中引用的成员的参数(即,悬崖@foo.com)。相反,正如您将在下面看到的,Service API 反而认为参数是一个字符串,返回“usemail”作为电子邮件参数,而不是我要引用的成员对象的参数。

我对 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 

我在成员的显示路径中调用函数:

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"}

【问题讨论】:

  • 我在想我的问题可能不够直接。我想,在核心,我问的是如何将我的 Members 模型的变量传递给另一个函数。

标签: ruby-on-rails httparty


【解决方案1】:

基本上,这就是我要找的东西

"email" =&gt; member.usemail 不是 :usemail"usemail"

【讨论】:

    猜你喜欢
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 2015-09-18
    • 2022-01-18
    • 1970-01-01
    • 2021-07-27
    • 2019-02-02
    相关资源
    最近更新 更多