【发布时间】: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 模型的变量传递给另一个函数。