1

我有两个模型,项目和图像。在图像模型 belongs_to :item 下,项目模型有:many :images。

图像模型具有 item_id 属性。

在项目查看器下,我试图显示与每个项目关联的图像。因此,例如,我想将 item_id 1000 的图像显示到 ID 为 1000 的 Item 上。

我得到一个找不到带有 ID 错误的图像。

查看器如下所示:

<h1>Listing items - temporary testing page</h1>

<table>
  <tr>
    <th>Brand</th>
    <th>Item title</th>
    <th>Description</th>
    <th>Image link</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>

<% @items.each do |item| %>
  <tr>
    <td><%= item.brand %></td>
    <td><%= item.item_title %></td>
    <td><%= item.description %></td>
    <td><%= item.image_id %></td>
    <td><%= image_tag @findimages.small_img %></td>
    <td><%= link_to 'Show', item %></td>
    <td><%= link_to 'Edit', edit_item_path(item) %></td>
    <td><%= link_to 'Destroy', item, method: :delete, data: { confirm: 'Are you sure?' }     %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New Item', new_item_path %>

像这样的项目控制器:

class ItemsController < ApplicationController
  # GET /items
  # GET /items.json
  def index
    @items = Item.all(params[:id])
    @findimages = Image.find(params[:item_id])

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @items }
    end
  end
.
.
.

对菜鸟的帮助将不胜感激!

4

2 回答 2

1

所以似乎没有带有 params[:item_id] 的图像

  1. 使用 @findimages = Image.find(params[:item_id]) 如果 params[:item_id]
  2. 在 image.rb 中使用 validates_presence_of :item_id
  3. Item.all(params[:id]) -
    Item.all 的错误 Item.find(params[:id])
  4. 您正在使用 :item_id - 没错。接下来你应该在 item.rb 中使用 has_one :image 和在 image.rb 中使用 belongs_to :item。所以你的代码看起来像:

    def index  
      @items = Item.all
    

并且在视野中

<td><%= image_tag item.image.small_img %></td>

UPD:进入 rails 控制台并通过以下方式确保所有图像都有 item_id:

Image.where(:item_id => nil)

UPD2:不要将 pgadmin 与 rails 一起使用,rails - 最好的数据库管理工具。

于 2012-10-16T10:45:20.467 回答
0

改变

@findimages = Image.find(params[:item_id])

@findimages = Image.find_by_id(params[:item_id])

参考find它指出If no record can be found for all of the listed ids, then RecordNotFound will be raised.

当没有找到给定 id 的记录时find_by_id它将返回哪里nil

于 2012-10-16T10:21:46.430 回答