Rails 4 - 使用Moz API在视图中显示信息

时间:2014-04-28 21:19:53

标签: ruby-on-rails api ruby-on-rails-4

我正在使用seomoz的linkscape-gem来使用他们的api获取数据,而我依次想要在视图中显示数据。 (注意:我也在使用Wicked gem来逐步构建对象)。目前我在我的控制器中有这个:

def update
  @bid = Bid.find(params[:bid_id])
  @linkscape = moz if step == steps.second
  @bid.attributes = build_params
  render_wizard @bid
end

def moz
  @client = Linkscape::Client.new(:accessID => "accessID", :secret => "secret")
  @response = client.urlMetrics("http://example.com", :cols => :all)
  return @response
end

在我看来:

<%= debug(@linkscape) %>

在视图的调试部分中没有显示任何内容,所以我想知道是否1)我使用了错误的语法2)错误地访问API信息(我确实创建了一个Moz帐户并生成了访问ID和密钥,他们正在使用)3)误解如何在视图中显示控制器变量或4)其他东西。

2 个答案:

答案 0 :(得分:3)

有一个拼写错误:您正在将Linkspace::Client.new实例保存在实例变量@client中,但是您尝试在名为urlMetrics的变量上调用client不知道。

def moz
  client = Linkscape::Client.new(:accessID => "accessID", :secret => "secret")
  @response = client.urlMetrics("http://example.com", :cols => :all)
  return @response
end

希望它有所帮助! :)

答案 1 :(得分:1)

要使记录器正常工作并获得响应,您必须首先更正拼写错误,即@response分配应更改为@client而不是客户端。

def moz
  @client = Linkscape::Client.new(:accessID => "accessID", :secret => "secret")
  @response = @client.urlMetrics("http://example.com", :cols => :all)
  return @response
end

然后在视图中,您可以使用双向打印他的值。首先是使用

Rails.logger.debug("My object: #{@linkscape.inspect}") 

并查看开发日志以查看结果

或使用您自己的方式

<%= debug(" Linkscape Value"+@linkscape) %>

如果您的值为空,则表示if条件设置为false且您的@linkscape未获取值