2014-11-02 49 views
0

进出口新的西纳特拉,和我有一个DataMapper的,一对多的关系西纳特拉DataMapper的一个一对多的关系

db.rb

env = ENV["RACK_ENV"] 
url = Dir.pwd + "/db/#{env}" 
DataMapper.setup :default, "sqlite://#{url}.sqlite3" 

class Order 
    include DataMapper::Resource 

    property :id, Serial 
    property :client, String 

    has n, :order_items 
end 

class OrderItem 
    include DataMapper::Resource 

    property :id, Serial 
    property :dish_id, Integer 

    belongs_to :order 
end 

DataMapper.finalize 
DataMapper.auto_upgrade! 

dishes.rb问题

DISHES = [ 
    { id: 1, name: "Mac and Cheese", category: "Pasta", price: 10 }, 
    { id: 2, name: "Steak", category: "Meat", price: 9 }, 
    { id: 3, name: "Fish and Chips", category: "Fish", price: 12 }, 
    { id: 4, name: "Tiramisu", category: "Dessert", price: 5 } 
] 

app.rb

get do 
    @orders = Order.all 
    @dishes = DISHES 

    haml %s(orders/index) 
end 

index.haml

%table.row 
    [email protected] do |order| 
    %tr 
     %td=order.client 
     %td 
     %ul 
      -order.order_items.each do |item| 
      %li 
       [email protected] { |dish| dish[:id] == item.dish_id }.first[:name] 

这一行:

[email protected] { |dish| dish[:id] == item.dish_id }.first[:name] 

不表明客户端已经拿起碗碟,有什么不对?

回答

0

对不起,我是愚蠢的,这条线:

[email protected] { |dish| dish[:id] == item.dish_id }.first[:name] 

应该是:

[email protected] { |dish| dish[:id] == item.dish_id }.first[:name] 

所以它会打印出结果,我找到了解决方案后,我将其更改为ERB格式的而。