god*_*yan 3 ruby-on-rails partial-views ruby-on-rails-4
我在这里做了一些明显错误的事情,但我不明白.
我有一个像这样的部分电话:
= render 'shared/purchase', collection: @purchases
Run Code Online (Sandbox Code Playgroud)
@purchases 在控制器中定义如下:
@purchases = current_user.purchases
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
app/views/shared/_purchase.html.slim where line #3 raised:
undefined local variable or method `purchase' for #<<Class:0x007fd8ca54f970>:0x007fd8ca54eb60>
Run Code Online (Sandbox Code Playgroud)
但是,当我将partial更改为只渲染local_assigns时,我看到了:
[:collection, #<ActiveRecord::Associations::CollectionProxy [#<Purchase id: 40, user_id: 20, purchaseable_id: 6, purchaseable_type: "PurchaseType", frequency: "Weekly", day: "Su", notes: "leave at gate", allergies: "peanuts", created_at: "2013-07-24 16:58:08", updated_at: "2013-07-24 16:58:08", size: "Normal", quantity: 2>, #<Purchase id: 41, user_id: 20, purchaseable_id: 5, purchaseable_type: "PurchaseType", frequency: "Weekly", day: "Su", notes: "leave at gate", allergies: "peanuts", created_at: "2013-07-24 16:58:08", updated_at: "2013-07-24 16:58:08", size: "Jumbo", quantity: 3>, #<Purchase id: 42, user_id: 20, purchaseable_id: 7, purchaseable_type: "PurchaseType", frequency: "Weekly", day: "Su", notes: "leave at gate", allergies: "peanuts", created_at: "2013-07-24 16:58:08", updated_at: "2013-07-24 16:58:08", size: nil, quantity: 1>, #<Purchase id: 43, user_id: 20, purchaseable_id: 8, purchaseable_type: "PurchaseType", frequency: "Weekly", day: "Su", notes: "leave at gate", allergies: "peanuts", created_at: "2013-07-24 16:58:08", updated_at: "2013-07-24 16:58:08", size: nil, quantity: 1>]>]
[:purchase, nil]
Run Code Online (Sandbox Code Playgroud)
为什么每个集合项都不会被选为局部变量purchase?
我正在撕扯我的头发,我确定这是愚蠢的,我以前做了很多次,甚至比较旧的工作代码,我无法弄清楚问题是什么.要么它是一个新的Rails 4,我在文档中没有看到,或者我是一个白痴.
谢谢!
关于Layouts和Rails中Render的Rails文档给出了一个使用partial参数的示例render:
<h1>Products</h1>
<%= render partial: "product", collection: @products %>
Run Code Online (Sandbox Code Playgroud)