我仍然不太清楚循环,但这次更令人困惑。
我有产品和类别模型以及它们之间的关系:has_many 和:belongs_to 。
在我的应用程序导航栏中,我有一个显示类别的下拉列表:
<% @categories.each do |cat| %>
<li><%= link_to cat.name, cat %></li>
<% end %>
(我稍后会将此循环移至部分)
它工作正常,但现在我注意到如果我尝试使用此链接<%= link_to 'New Product', new_product_path %>
它会抛出未定义方法'name'的错误...我甚至无法理解为什么此链接会触发此和平代码:
Products_controller.rb :
def new
@product = Product.new
@categories = Category.all.map { |c| [ c.name, c.id ] }
end
shema.rb :
create_table "categories", force: :cascade do |t|
t.string "name"
t.text "desc"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
答案 0 :(得分:0)
你需要:
<li><%= link_to cat[:name], cat %></li>
您已将@categories
映射到Array
,因此您需要在名称索引处定位数组。 (或在你的情况下item[:name]
)
答案 1 :(得分:0)
你需要做
@categories = Category.all.map { |c| { name: c.name, id: c.id } }
在视野中
<% @categories.each do |cat| %>
<li><%= link_to cat[:name], cat %></li>
<% end %