0

我已经设法让 Flickr API 使用 RoR 和 Flickr gem。但是,在显示照片之前,它似乎返回了很多与照片相关的信息(作为字符串),例如

[#<Flickr::Photo:xxxxxx @rotation="0", @client=#<Flickr:xxxx 
@host="http://api.flickr.com", @activity_file="flickr_activity_cache.xml",
@api="/services/rest", @api_key="xxxxxxxxx">, @api_key="xxxxxx", @title="JAPAN",
@id="xxxx".....etc

以上只是返回的信息片段,其中一些信息替换为 xxxx。如何删除此信息?

控制器如下:

class FlickrController < ApplicationController
def flickrsearch
    flickr = Flickr.new
    if params[:text].nil?
        #render :text => '<h2>Please enter a search string</h2>'
    else
        begin
            @photos = flickr.photos(:text => params[:text], :per_page =>'10', :sort => 'relevance')
            render "display"
        end
    end
end

观点如下:

<div class="flickr">
    <table>
        <%= @photos.each do |p| %>
           <td>
              <%= image_tag(p.sizes[0]['source']) %><br>
              <%= p.title %>
          </td>
       <% end %>
    </table>
</div>

Flickr gem 中的“Flickr”类中的“photos”方法如下:

  def photos(*criteria)
    photos = (criteria[0]) ? photos_search(criteria[0]) : photos_getRecent
    # At this point, search criterias with pet_page => has structure
    # {"photos => {"photo" => {...}}"} 
    # While per_page values with > 1 have
    # {"photos => {"photo" => [{...}]}"} 
    collection = photos['photos']['photo']
    collection = [collection] if collection.is_a? Hash
    collection.collect { |photo| Photo.new(photo['id'], @api_key) }
  end

我是一个新手,如果这是一个简单的问题,我很抱歉。我有一种感觉,这与我没有指向数组中的正确位置有关?

谢谢。

4

2 回答 2

1

正如您已经发现您的 ERB 语法有问题。简而言之,<% ruby.code %>运行 ruby​​ 代码并且不输出任何内容,同时<%= ruby.code %>运行 ruby​​ 代码并将其结果输出到 HTML 文件中(在进行一些 ruby​​ 结果到字符串到 HTML 的转换之后。)

这意味着原始代码不仅会打印出图像标签,还会打印出 的结果@photos.each,与 相同@photos,然后得到您所看到的输出。

<%= @photos.each do |p| %>
    <%= image_tag(p.sizes[0]['source']) %><br>
<% end %>

...而这个只输出图像标签:

<% @photos.each do |p| %>
    <%= image_tag(p.sizes[0]['source']) %><br>
<% end %>
于 2013-05-10T11:54:44.910 回答
0

哇。我刚刚弄清楚我的代码到底出了什么问题......在视图中,我需要做的就是删除变量@photos 之前的“=”符号!(见下文)。好的 - 如果有人可以向我解释这个语法错误,那就太好了。谢谢。

<div class="flickr">
    <table>
        <% @photos.each do |p| %>
           <td>
              <%= image_tag(p.sizes[0]['source']) %><br>
              <%= p.title %>
          </td>
       <% end %>
    </table>
</div>
于 2013-04-09T21:25:51.570 回答