ライブラリ追加のテスト – ca009
railsのライブラリ追加ルールを考えてみる。
■ライブラリファイルを作成
引数に2を加えて返すだけの関数を追加
Ruby
# ---- cpro01\lib\search_index.rb ---- def pu(d) return(d + 2) end
■ライブラリ初期化用ファイルの作成
初期化時に上記ライブラリファイルを読み込むextensions.rbを作成
Ruby
# ---- cpro01\config\initializers\extensions.rb ---- require 'search_index.rb'
■Controllerで関数呼び出し
Ruby
# ---- cpro01\app\controllers\books_controller.rb ----
class BooksController < ApplicationController
# GET /books
# GET /books.xml
def index
@books = Book.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @books }
end
end
# GET /books/1
# GET /books/1.xml
def show
@book = Book.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @book }
end
end
# GET /books/new
# GET /books/new.xml
def new
@book = Book.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @book }
end
end
# GET /books/1/edit
def edit
@book = Book.find(params[:id])
end
# POST /books
# POST /books.xml
def create
@book = Book.new(params[:book])
respond_to do |format|
if @book.save
flash[:notice] = 'Book was successfully created.'
format.html { redirect_to(@book) }
format.xml { render :xml => @book, :status => :created, :location => @book }
else
format.html { render :action => "new" }
format.xml { render :xml => @book.errors, :status => :unprocessable_entity }
end
end
end
# PUT /books/1
# PUT /books/1.xml
def update
@book = Book.find(params[:id])
respond_to do |format|
if @book.update_attributes(params[:book])
flash[:notice] = 'Book was successfully updated.'
format.html { redirect_to(@book) }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @book.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /books/1
# DELETE /books/1.xml
def destroy
@book = Book.find(params[:id])
@book.destroy
respond_to do |format|
format.html { redirect_to(books_url) }
format.xml { head :ok }
end
end
def search
@searchck = {"Books" => false, "DVD" => false, "Music" => false, "Software" => false, "VideoGames" => false}
@sortck = {"salesrank" => false, "releasedate" => false, "titlerank" => false, "-titlerank" => false}
@keyword = params[:keyword]
@search_index = params[:search_index]
@sort = params[:sort]
#デフォルトチェック用
@searchck["#{@search_index}"] = true
@sortck["#{@sort}"] = true
#本だけはソート用のキーが他の物と違うため変更
@sort = "daterank" if @search_index == "Books" && @sort == "releasedate"
#検索
res = Amazon::Ecs.item_search(@keyword, {
:search_index => @search_index,
:response_group => 'Medium',
:sort => @sort
})
@items = []
res.items.each do |item|
@items << Item.new(
item.get('asin'),
item.get('itemattributes/title'),
item.get('detailpageurl'),
item.get_hash('smallimage'),
item.get('author')
)
end
@testp = pu(5)
end
end
▲追加したのは、最後の”@testp = pu(5)”のみ
■Viewファイルに追加・確認
@testpを表示してみる。
Ruby
<% # ---- cpro01\app\views\books\search.html.erb ---- %>
<%= h @testp %>
<p>検索結果</p>
<% if @items && @items.size > 0 %>
<table>
<% @items.each do |item| %>
<tr>
<td><%= item.title %><br />
<% if item.image != nil %>
<%= link_to(image_tag(item.image[:url], :size => "#{item.image[:width]}x#{item.image[:height]}", :alt => item.title), item.url, :target => '_blank') %>
<% end %><br />
<%= item.asin %><br />
<%= item.author %>
<% form_tag :controller => "maps", :action => "show" do %>
<%= hidden_field_tag("asin", item.asin) %>
<%= hidden_field_tag("address", "新宿") %>
<%= submit_tag("この本の地図データを登録") %>
<% end %>
</td>
</tr>
<% end %>
<% end %>
</table>
▲2行目を追加
検索結果の上に”7”が表示される事を確認。
zo-i | Project004:cpro01 | 01 13th, 2010 |