小编ekr*_*aca的帖子

如何在rails中解析json url响应

我有一个简单的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)

上面的代码只是一个解释我想要实现的内容的示例.任何帮助都会很棒.

我已经尝试了typhoeusyajl-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)

json ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

1
推荐指数
1
解决办法
6208
查看次数

Rails如何知道是否存在has_one/belongs_to关系

我有'用户'(设计)和'位置'.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个小时.我不确定我在这里缺少什么.

ruby-on-rails has-one belongs-to model-associations

1
推荐指数
1
解决办法
1739
查看次数

在[GET]"/ articles/new"中路由错误

我正在阅读"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)

ruby ruby-on-rails rails-routing

1
推荐指数
1
解决办法
1473
查看次数

无法访问与has_one相关的模型

我有两个型号:ShowVenue.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.有任何想法吗?

ruby activerecord ruby-on-rails relational-database has-one

0
推荐指数
1
解决办法
809
查看次数

如何从UITableViewCell获取信息?

我有一个带有原型单元格的TableView,在这个原型单元格中我有一个文本字段.好吧,我需要的是在它发生变化时从这个文本字段中获取信息.我需要这样做来喂养一个物体.

我怎样才能做到这一点 ?

uitableview tableview ios

0
推荐指数
1
解决办法
78
查看次数