簡體   English   中英

在我的新Rails應用程序中工作/顯示的圖像

[英]Images working/showing in my new Rails app

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

是否可以將rails配置到某個位置以僅查看兩個文件夾?

我正在使用一本名為Agile web Development with Rails的書來學習如何使用框架,但似乎有一些細微的差別。 它為rails 3.0和3.1提供了代碼(我正在使用后者)但它並不總是按預期工作。 到目前為止,我們已經為Products類創建了scaffolding,並使用seeds.rb將一些數據放入sqlite3數據庫中。 每個“產品”的assets / images文件夾中都有圖像,但它沒有顯示。 我在seeds.rb文件中試驗了圖像的路徑,但它沒有用。

圖像位於app / assets / images文件夾中

我將向您展示以下文件,所有這些文件都以某種方式處理圖像

1.app/views/products/_form.html.erb 2.app/views/products/index.html.erb 3. db / seeds.rb

更新:在日志文件中,它表示圖像存在路由錯誤。

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. db / seeds.rb (注意我在這里嘗試了圖片網址)

    Product.delete_all Product.create(:title =>'Web Design for Developers',:description =>%{

    等等等等

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

    Product.create(:title =>'Programming Ruby 1.9',:description =>%{

    等等等等。

    },:image_url =>'/ images / ruby​​.jpg',:price => 49.50)

    Product.create(:title =>'Rails Test Prescriptions',:description =>%{

    等等等等

    },:image_url =>'/ images / rtp.jpg',:price => 43.75)

好的,所以我一直在完成這本書,你必須在2個地方做出改變。

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

您還必須對視圖進行更改。 http://pragprog.com/titles/rails4/source_code下載本書的源代碼,並查看他們對於產品#index視圖的庫2的內容。 這個版本讓他們變得非常草率。

看看Rails 3.1資產管道指南 在2.2編碼鏈接到資產中,您將找到以下內容:

在常規視圖中,您可以訪問assets / images目錄中的圖像,如下所示:

<%= image_tag "rails.png" %>

正如我理解你的代碼(我可能在這里錯了),你試圖將圖像的文件名存儲在數據庫中,然后將該圖像與其他對象數據一起顯示出來。 所以你應該嘗試從中刪除路徑,只使用文件名。 然后使用image_tag方法表示它。

我遇到了同樣的問題然后意識到當我下載Depot應用程序的測試圖像時,它們被保存為XXX.jpeg而不是XXX.jpg。 因此,seeds.rb中的URL與assets / images中的文件名不匹配。

唯一對我有用的是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM