我正在学习Rails 3中的'where',我想知道为什么我的代码给了我一个NoMethod错误。
def create
#get form values from 'new' page
@post = Post.new(params[:post])
#search for the inventory item with the sku code the user typed in the form
@item = Inventory.where(:sku_code => @post.sku_code)
#set post variable to a variable from the row with the sku code
@post.detail = @item.detail
@post.save
end
通过搜索SKU,我想检索相同ID中的其他变量并将它们设置为我的@post变量。有人能帮我一把吗?
答案 0 :(得分:1)
假设SKU代码是唯一的,你必须这样做
@post = Post.new(params[:post])
@post.detail = Inventory.where(:sku_code => @post.sku_code).first.try(:detail)
first
将从数据库中获取第一个(也可能是唯一的)记录。如果返回的try
不是nil,则detail
会尝试抓取Inventory
。
检查this blog post以了解有关try
方法的更多信息。