我有一个简单的Rails应用程序向外部网站发出请求并返回一个带有回调的json url响应到我的站点,以通知我的Rails应用程序有关响应.json url示例是https://voguepay.com/?v_transaction_id=demo-1345109950&type=json,响应正文如下:
{"merchant_id":"demo","transaction_id":"demo-1345109950","email":"testuser@buyerdomain.com","total":"10","total_paid_by_buyer":"10.00","total_credited_to_merchant":"9.90","extra_charges_by_merchant":"0.00","merchant_ref":"","memo":"Donation of N10 to Test User","status":"Approved","date":"2012-01-01 11:39:11","referrer":"http:\/\/sellerdomain.com\/buy_now.html","method":"VoguePay","fund_maturity":"2012-01-03"}
Run Code Online (Sandbox Code Playgroud)
我想将此响应转换为Rails方法,而不是简单地给出我需要进行查询的属性.例如,从响应主体我需要做出如下操作:
def notify
response = Json.parse('https://voguepay.com/?v_transaction_id=demo-1345109950&type=json').body
response.status
response.date
response.merchant_id
response.total
end
Run Code Online (Sandbox Code Playgroud)
上面的代码只是一个解释我想要实现的内容的示例.任何帮助都会很棒.
我已经尝试了typhoeus和yajl-ruby gems但是当请求进来时,我的所有身份验证方法都被删除了,我不断收到错误消息,无法验证csrf元令牌.即使我跳过它,当前用户也会自动注销(使用设计认证).使用的代码示例如下:
class NotificationsController < ApplicationController
skip_before_filter :verify_authenticity_token
def notify
@transaction_id = params[:transaction_id]
do_notify
end
private
def do_notify
hydra = Typhoeus::Hydra.new
request = Typhoeus::Request.new("https://voguepay.com/?v_transaction_id=#{@transaction_id}&type=json")
request.on_complete do |response|
logger.info("#{response.request.url} in #{response.time} seconds") #remove in production to avoid huge logs
transaction = Yajl::Parser.parse(response.body) #or Yajl::Parser.parse(response.body)
#Now we have the following keys in our transaction hash …Run Code Online (Sandbox Code Playgroud) 我有'用户'(设计)和'位置'.has_one位置belongs_to用户时的用户位置.我的控制器中有一个实例变量,只有在两个条件为真时才存在.
if user_signed_in? && !current_user.location.empty?
Run Code Online (Sandbox Code Playgroud)
但错误返回:
undefined method 'empty?' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
哪个是正确的,因为current_user没有位置.我在谷歌上搜索了这个2个小时.我不确定我在这里缺少什么.
我正在阅读"Rails入门",我坚持第5.1章.我试过了:
rails g controller articles
Run Code Online (Sandbox Code Playgroud)
我试图打开articles/new,我收到以下错误消息:
No route matches [GET] "/articles/new"
Rails.root: C:/Sites/blog
Run Code Online (Sandbox Code Playgroud)
然后我运行rake routes,我的命令提示:
You don't have any routes defined! Please add some routes in config/routes.rb'
Run Code Online (Sandbox Code Playgroud)
这是我的routes.rb:
Blog::Application.routes.draw do
get "welcome/index"
root 'welcome#index'
end
Run Code Online (Sandbox Code Playgroud) 我有两个型号:Show和Venue.Show有一个场地,而每个场地都属于show.这两个条件在带有has_one&belongs_tostatements的模型文件中定义.但是,我无法通过这样做进入会场show.venue.考虑以下代码,其中s是一个Show实例:
logger.info("*********************")
logger.info("#{s.inspect}")
logger.info("#{Venue.find(s.venue_id)}") # Works
logger.info("#{s.venue}") # Causes a MySQL Error
logger.info("*********************")
Run Code Online (Sandbox Code Playgroud)
我觉得导致MySQL错误的行应该有效.这是错误:
ActiveRecord::StatementInvalid (Mysql::Error: Unknown column 'venues.show_id' in 'where clause': SELECT * FROM `venues` WHERE (`venues`.show_id = 95) LIMIT 1)
Run Code Online (Sandbox Code Playgroud)
我不知道它为什么试图访问venues.show_id.有任何想法吗?
我有一个带有原型单元格的TableView,在这个原型单元格中我有一个文本字段.好吧,我需要的是在它发生变化时从这个文本字段中获取信息.我需要这样做来喂养一个物体.
我怎样才能做到这一点 ?