按ASIN排序(亚马逊代码)

时间:2013-12-08 11:07:04

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 amazon-ec2

在我的系统中,我希望用户只为一本书创建一个页面。当已有现有页面时,我想显示该页面的链接。当没有现有页面时,我想显示“CREATE BUTTON”。

我设法实现了这个系统关于“有ISBN的书”。然而,所有的Kindle书籍都没有ISBN。所以,我卡住了。

我创建了一个kindle-book页面。它的链接是正确的。但其他kindle书籍的链接也会自动成为第一个创建的书籍的链接。

我写了下面的代码。也许“ASIN”排序功能有问题。你能告诉我怎么解决这个问题吗?

☆index.html.erb(index_controller)

<% if @items.present? %>
      <% @items.each do |i| %>
      <% i_attr = i.get_element('ItemAttributes') %>
        <tr>
          <td> <%= link_to image_tag(i.get('SmallImage/URL'), {:style => 'border: none;'}), i.get('DetailPageURL') %></td>
          <td> <%= link_to i_attr.get('Title'), i.get('DetailPageURL') %></td>
          <td> <%= i_attr.get('Author') %></td>
          <td> <%= i_attr.get('PublicationDate')%></td>
          <td> <%= i_attr.get('Publisher') %></td>
          <td> <%= i_attr.get('NumberOfPages')%></td>
          <td >
               <% if i_attr.get("ISBN") %>
                  <%= i_attr.get('ISBN') %>
              <% elsif i.get("ASIN") %>
                   <%= i.get("ASIN") %>
              <% end %>
          </td>
          <td>
              <% if @existing_groups_isbns.include? i_attr.get('ISBN')  %>
                 <% @existing_groups_isbns.each do |isbn| %>
                   <% if isbn == i_attr.get('ISBN') %>
                      <% @group_i = Group.where(:isbn =>isbn).first %>
                        <%= link_to '既存ページへ' , group_path(@group_i) %>
                   <% end %><!--if == -->
                <% end %><!--isbn-->
              <% elsif  @existing_groups_asins.include? i.get("ASIN") %> 
                <% @existing_groups_asins.each do |asin| %>
                 <% if asin == i.get("ASIN") %>
                  <% @group_a = Group.where(:asin =>asin).first %>
                    <% link_to '既存ページへ', group_path(@group_a) %>
                  <% end %><!--if== -->
                <% end %><!-- asin-->
              <% else %><!-- if includes?==-->
                    <%= link_to '新規作成', {:controller => 'groups', :action => 'new', :name => i.get('ItemAttributes/Title'),:author => i.get('ItemAttributes/Author'), :publish => i.get('ItemAttributes/Publisher'), :published => i.get('ItemAttributes/PublicationDate'), :isbn => i.get('ItemAttributes/ISBN'), :asin => i.get('ASIN'), :page => i.get('ItemAttributes/NumberOfPages'), :imageurl=>i.get('MediumImage/URL')} ,class: "btn btn-midium btn-primary"%>
             <% end %><!--if  includes?--> 
          </td>
      </tr>  
  <% end %><!-- @items.each do-->
 <% else %><!--if @items.present?-->

☆index_controller

class IndexController < ApplicationController
  def index
    @keyword = params[:keyword]
    if @keyword.present?
      Amazon::Ecs.debug = true
      res = Amazon::Ecs.item_search(params[:keyword], 
          :search_index => 'All', :response_group => 'Medium')
      @items = res.items

    search_isbns = @items.map{ |isbns| isbns.get('ItemAttributes/ISBN')}
    search_asins = @items.map{ |asins| asins.get('ASIN')}
    @existing_groups_isbns = Group.select(:isbn).where(:isbn => search_isbns).map(&:isbn)
    @existing_groups_asins = Group.select(:asin).where(:asin => search_asins).map(&:asin)

   end
  end

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。谢谢你的关注。

 <td>
          <% if i_attr.get('ISBN') %>
              <% if @existing_groups_isbns.include? i_attr.get('ISBN')  %>
                 <% @existing_groups_isbns.each do |isbn| %>
                   <% if isbn == i_attr.get('ISBN') %>
                      <% @group_i = Group.where(:isbn =>isbn).first %>
                        <%= link_to '既存ページへ' , group_path(@group_i) %>
                   <% end %><!--if == -->
                <% end %><!--isbn-->      
              <% else %><!-- if includes?==-->
                    <%= link_to '新規作成', {:controller => 'groups', :action => 'new', :name => i.get('ItemAttributes/Title'),:author => i.get('ItemAttributes/Author'), :publish => i.get('ItemAttributes/Publisher'), :published => i.get('ItemAttributes/PublicationDate'), :isbn => i.get('ItemAttributes/ISBN'), :asin => i.get('ASIN'), :page => i.get('ItemAttributes/NumberOfPages'), :imageurl=>i.get('MediumImage/URL')} ,class: "btn btn-midium btn-primary"%>
             <% end %><!--if  includes?-->
          <% else %>
            <% if @existing_groups_asins.include? i.get('ASIN')  %>
                 <% @existing_groups_asins.each do |asin| %>
                   <% if asin == i.get("ASIN")  %>
                      <% @group = Group.where(:asin =>asin).first %>
                        <%= link_to '既存ページへ' , group_path(@group) %>
                   <% end %><!--if == -->
                <% end %><!--asin-->
              <% else %><!-- if includes?==-->
                    <%= link_to '新規作成', {:controller => 'groups', :action => 'new', :name => i.get('ItemAttributes/Title'),:author => i.get('ItemAttributes/Author'), :publish => i.get('ItemAttributes/Publisher'), :published => i.get('ItemAttributes/PublicationDate'), :isbn => i.get('ItemAttributes/ISBN'), :asin => i.get('ASIN'), :page => i.get('ItemAttributes/NumberOfPages'), :imageurl=>i.get('MediumImage/URL')} ,class: "btn btn-midium btn-primary"%>
             <% end %><!--if  includes?-->
          <% end %> 
          </td>
相关问题