1
在我的系統中,我希望用戶只爲一本書創建一個頁面。當已有的頁面已經存在時,我想顯示該頁面的鏈接。當沒有現有頁面時,我想顯示「CREATE BUTTON」。按照ASIN排序(Amazon code)
我成功地實現了這個系統關於「有書的書」。但是,所有的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