如何将图像分配给给定的选择

时间:2014-07-01 16:55:50

标签: ruby-on-rails

我希望用户从选择中选择一个价格,并根据所选价格,显示一个或哪个图像。

我创建了一个价格表,有2列:价格(整数)和price_image(字符串)。

然后,我在Foods表中创建了一个名为:price_id(整数)的列,并创建了2个asociations:

Prices has_many :foods, and Foods has_one :price.

一切都还好,直到那里。我可以在我看来显示@food的price_id。

我需要告诉Rails:

如果price_id = 1,则显示price_id = 1的price_image 如果price_id = 2,则显示price_id = price = id ...等等......

我错过了什么?非常感谢

食品控制器(在索引操作中,我需要显示价格图像):

  def index
      @addictfood = Addictfood.last
      @food = Food.last
      @foods = Food.by_category(params[:category_id])
      @price = Prices.find(params[:price_id])
  end

我的观点

<div class="panel semi_margin_bottom food_card">
    <%= image_tag @food.food_image_url(:food_small), class: "radius" %>
    <h5> <%= @food.name %> </h5>
    <span class="small"><i class="icon-list"></i> <%= @food.ingredients %></span>
    <span class="medium block textright"><%= @food.price_id %></span>
</div>

Foods控制器出错:找不到没有ID的价格

非常感谢

1 个答案:

答案 0 :(得分:0)

根据你的评论:

I can't understand why do I have wrong the associations. When I create a new Food, I need to select a price for it, how can I do this if I don't have a price_id to select?

您需要的是has_and_belongs_to_many关联。

所以你的模型看起来像:

class Price < ActiveRecord::Base
  has_and_belongs_to_many :foods
end

class Food < ActiveRecord::Base
  has_and_belongs_to_many :prices
end

回到你宣布关联的方式,你有Price has_many :foods, and Food has_one :price.

如果Food has_one :priceprice_id in your foods table栏,那么Price has_many :foodsprice_id也会找到你的食物表中的Price belongs_to :food。因此,不要使用价格has_many:食品,而是 food_id in your prices table ,这将使铁路找到 {{1}} 。有关详细信息,请参阅rail guides