2011-09-27 92 views
4

更新: O.K.這很奇怪,在瀏覽器中,我可以訪問localhost:3000/assets/images/rails.png中的圖像,但是當我將這個路徑放到seeds.rb文件中,然後加載頁面時,它顯示它正在嘗試查找/assets/rails.png中的圖像,即它跳過圖像文件夾...任何想法?圖像時/在我的新的Rails應用程序顯示

難道軌道某處配置爲只考慮兩個文件夾?

我使用了一本書叫敏捷Web開發使用Rails來學習如何使用框架,但似乎有一些細微的差別。它爲rails 3.0和3.1提供代碼(我使用後者),但它並不總是按預期工作。到目前爲止,我們已經爲Products類創建了腳手架,並使用了seeds.rb將一些數據放入sqlite3數據庫中。每個「產品」的資產/圖像文件夾中都有圖像,但沒有顯示。 我在圖像路徑的seeds.rb文件中進行了實驗,但沒有奏效。

圖片所在的文件夾的應用程序/資產/圖像

我會告訴你下面的文件,所有這些都以某種方式處理圖像

1.app/views/products/_form。 html.erb 2.app/views/products/index.html.erb 3分貝/ seeds.rb

UPDATE:在日誌文件中,它說,沒有爲圖像的路由錯誤。

Started GET "/assets/wd4d.jpg" for 127.0.0.1 at Tue Sep 27 11:01:43 -0400 2011 
Served asset /wd4d.jpg - 404 Not Found (3ms) 

ActionController::RoutingError (No route matches [GET] "/assets/wd4d.jpg"): 


Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.1.0/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.5ms) 


Started GET "/images/ruby.jpg" for 127.0.0.1 at Tue Sep 27 11:01:43 -0400 2011 

ActionController::RoutingError (No route matches [GET] "/images/ruby.jpg"): 

應用/視圖/產品/ _form.html.erb

<%= form_for(@product) do |f| %> 
    <% if @product.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@product.errors.count, "error") %> prohibited this product from being saved:</h2> 

     <ul> 
     <% @product.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :title %><br /> 
    <%= f.text_field :title %> 
    </div> 
    <div class="field"> 
    <%= f.label :description %><br /> 
    <%= f.text_area :description, :rows => 6 %> 
    </div> 
    <div class="field"> 
    <%= f.label :image_url %><br /> 
    <%= f.text_field :image_url %> 
    </div> 
    <div class="field"> 
    <%= f.label :price %><br /> 
    <%= f.text_field :price %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

2.app/views/products/index.html.erb

<h1>Listing products</h1> 

<table> 
<% @products.each do |product| %> 
    <tr class="<%= cycle('list_line_odd', 'list_line_even') %>"> 

    <td> 
     <%= image_tag(product.image_url, :class => 'list_image') %> 
    </td> 

    <td class="list_description"> 
     <dl> 
     <dt><%= product.title %></dt> 
     <dd><%= truncate(strip_tags(product.description), 
       :truncate => 80) %></dd> 
     </dl> 
    </td> 

    <td class="list_actions"> 
     <%= link_to 'Show', product %><br/> 
     <%= link_to 'Edit', edit_product_path(product) %><br/> 
     <%= link_to 'Destroy', product, 
        :confirm => 'Are you sure?', 
        :method => :delete %> 
    </td> 
    </tr> 
<% end %> 
</table> 

<br /> 

<%= link_to 'New product', new_product_path %> 
  1. 3.分貝/種子。 RB(注意這裏我用圖片的網址試驗)

    Product.delete_all Product.create(:標題=>'網頁設計開發者, :描述=> %{

    等等等等

    } , :image_url =>'wd4d.jpg',
    :price => 42.95)

    。 。 。

    Product.create(:標題=> '編程紅寶石1.9', :描述=> %{

    等等等等

    。}, :IMAGE_URL => '/images/ruby.jpg', :價格=> 49.50)

    。 。 。

    產品。創建(:標題=> '的Rails測試處方', :描述=> %{

    等等等等

    }, :IMAGE_URL => '/images/rtp.jpg', :價格=> 43.75)

+0

找出圖像的URL,然後直接通過輸入到地址欄訪問圖像。這應該可以幫助您瞭解是否找不到圖像路徑。另請參閱日誌文件 - 它可能包含未顯示圖像的404。 – Zabba

+1

o.k.這很奇怪,在瀏覽器中,我可以訪問localhost:3000/assets/images/rails.png中的圖像,但是當我將這個路徑放到seeds.rb文件中,然後加載頁面時,它顯示它正在嘗試查找/assets/rails.png中的圖像,即它跳過圖像文件夾...任何想法? – Leahcim

回答

6

好的,所以我一直在努力完成這本書,你必須在2個地方進行修改。

在種子文件中,只需引用jpg的名稱即可。由於您使用的是rails 3.1,assets/images /中的任何內容都可以通過它的名稱來引用。

您必須對視圖進行更改。請在此處下載本書的源代碼http://pragprog.com/titles/rails4/source_code,並查看它們在產品#索引視圖中的庫2的功能。他們對這個版本非常sl。。

+0

這些絕對不是某人首次嘗試學習rails時需要的錯誤。也許他們下次會做得更好?感謝修復。 – Tastybrownies

3

看看Rails 3.1 Guide to Asset Pipeline。在2.2節編碼鏈接到資產,你會發現以下內容:

在常規視圖,您可以訪問圖像資產/ images目錄是這樣的:

<%= image_tag "rails.png" %>

據我瞭解你的代碼(我可能在這裏是錯誤的),你嘗試將圖像的文件名存儲在數據庫中,並在稍後與其他對象數據一起顯示該圖像。所以你應該嘗試刪除它的路徑,只使用文件名。然後使用方法image_tag表示它。

1

我有同樣的問題,然後意識到,當我下載測試圖像的軟件倉庫應用程序,他們被保存爲XXX.jpeg而不是XXX.jpg。結果,seeds.rb中的URL與assets/images中的文件名不匹配。

1

爲我工作的唯一的事情就是:在瀏覽器

<%= image_tag('/assets/images/' + product.image_url, class: 'list_image') %> 
相關問題