Ruby on Rails ショッピングカート part1 アプリケーション作成

Ruby on Rails において ショッピングカート とは以下を示します。

  1. Railsアプリケーションの作成
    • アプリケーション名 depot
       %pwd
       /home/bishounen
       %rails depot
      
  2. データベース作成
    • テーブル名 products
       id,int,not null,auto_increment,
       title,vahchar(100),not null
       description,text,not null
       image_url,varchar(200),not null
       price,decimal(10,2),not null
       date_available,datetime
       primary key(id)
      
  3. database.ymlの編集
     下記4行を編集(環境に合わせて)
    
    1. database:
    2. username:
    3. password:
    4. host:
  4. 管理アプリケーションの作成
     %cd depot/
     %ls
     README          components      doc
     public          tmp
     Rakefile        config          lib
     script          vendor
     app             db              log
     test
     %ruby script/generate scaffold Product Admin
    
  5. ’.htaccess’を編集
     下記3行をコメントアウト
    
    1. AddHandler fastcgi-script .fcgi
    2. AddHandler cgi-script .cgi
    3. Options +FollowSymLinks +ExecCGI
    • http://www.bishounen.sakura.ne.jp/rails/images/knowledge/144_01_htaccess.jpg
  6. config/environment.rbを編集
     以下を追加
    
    1. $LOAD_PATH.push("/home/bishounen/local/ruby/lib/ruby/site_ruby/1.8")
    2. $LOAD_PATH.push("/home/bishounen/local/ruby/lib/ruby")
     以下をコメントアウト
    
    1. ENV[‘RAILS_ENV’] ||= ‘production’
    • http://www.bishounen.sakura.ne.jp/rails/images/knowledge/144_02_environment.jpg
  7. シンボリックリンク作成
     %pwd
     /home/bishounen/www
     %ln -s ../depot/public rails_depot
    
     以下にアクセスできたら成功
     http://www.bishounen.sakura.ne.jp/rails_depot
    
    • http://www.bishounen.sakura.ne.jp/rails/images/knowledge/144_03_welcom_rails.jpg
  8. 画面表示
     http://www.bishounen.sakura.ne.jp/rails_depot/admin
    
    • http://www.bishounen.sakura.ne.jp/rails/images/knowledge/144_04_admin.jpg
  9. リスト表示
     http://www.bishounen.sakura.ne.jp/rails_depot/admin/list
    
    • http://www.bishounen.sakura.ne.jp/rails/images/knowledge/144_05_list.jpg
  10. エディット表示
     http://www.bishounen.sakura.ne.jp/rails_depot/admin/show/1
    
    • http://www.bishounen.sakura.ne.jp/rails/images/knowledge/144_06_edit.jpg
  11. 少しデータ投入
    • http://www.bishounen.sakura.ne.jp/rails/images/knowledge/144_07_list_data_add.jpg
  12. app/viewa/admin/list.rhtml
    • 変更前
       <h1>Listing products</h1>
      
       <table>
         <tr>
         <% for column in Product.content_columns %>
           <th><%= column.human_name %></th>
         <% end %>
         </tr>
      
       <% for product in @products %>
         <tr>
         <% for column in Product.content_columns %>
           <td><%=h product.send(column.name) %></td>
         <% end %>
           <td><%= link_to 'Show', :action => 'show', :id => product %></td>
           <td><%= link_to 'Edit', :action => 'edit', :id => product %></td>
           <td><%= link_to 'Destroy', { :action => 'destroy', :id => product }, :confirm => 'Are you sure?', :post => true %></td>
         </tr>
       <% end %>
       </table>
      
       <%= link_to 'Previous page', { :page => @product_pages.current.previous } if @product_pages.current.previous %>
       <%= link_to 'Next page', { :page => @product_pages.current.next } if @product_pages.current.next %>
      
       <br />
      
       <%= link_to 'New product', :action => 'new' %>
      
    • 変更後
       <h1>商品一覧</h1>
      
       <table cellpadding="5" cellspacing="0">
       <%
       odd_or_even = 0
       for product in @products
         odd_or_even = 1 - odd_or_even
       %>
         <tr valign="top" class="ListLine<%= odd_or_even %>">
      
           <td>
             <img width="60" height="70" src="<%= product.image_url %>"/>
           </td>
      
           <td width="60%">
             <span class="ListTitle"><%= h(product.title) %></span><br />
             <%= h(truncate(product.description, 80)) %>
           </td>
      
           <td align="right">
             <%= product.date_available.strftime("%y-%m-%d") %><br/>
             <strong>$<%= sprintf("%0.2f", product.price) %></strong>
           </td>
      
           <td class="ListActions">
             <%= link_to '表示', :action => 'show', :id => product %><br/>
             <%= link_to '編集', :action => 'edit', :id => product %><br/>
             <%= link_to '破棄', { :action => 'destroy', :id => product },
                                    :confirm => "本当に破棄しますか?" %>
           </td>
         </tr>
       <% end %>
       </table>
      
       <%=  if @product_pages.current.previous
              link_to("前のページ", { :page => @product_pages.current.previous })
            end
       %>
      
       <%= if @product_pages.current.next
             link_to("次のページ", { :page => @product_pages.current.next })
           end
       %>
      
       <br />
      
       <%= link_to '新しい商品', :action => 'new' %>
      
  13. public/stylesheets/scaffold.cssに追加
     .ListTitle {
       color:        #244;
       font-weight:  bold;
       font-size:    20;
     }
     .ListActions {
       font-size:    x-small;
       text-align:   right;
       padding-left: 1em;
     }
     .ListLine0 {
       background:   #e0f8f8;
     }
     .ListLine1 {
       background:   #f8b0f8;
     }
    
    • http://www.bishounen.sakura.ne.jp/rails/images/knowledge/144_08_list_edited.jpg
     画像のPATHを編集するとこんな感じに。
     (/rails_depot/rails/images/01_Pragmatic_Project_Automation.jpg)
    
    • http://www.bishounen.sakura.ne.jp/rails/images/knowledge/144_09_images.jpg

ご訪問頂き有難う御座います。 当サイトを効率良く使うためにまずは FrontPage を見て下さい。 検索方法、一覧表示などの各情報を纏めています。
当サイトの説明 → Frontpage