rails的新手,我正在跟踪使用rails 3.1在Agile Web开发中找到的Depot项目.一切都很好,直到我迷失了本书使用"构建"方法.
@cart = current_cart
product = Product.find(params[:product_id])
@line_item = @cart.line_items.build(product: product)
Run Code Online (Sandbox Code Playgroud)
我的谷歌搜索让我明白.build方法只是一种在表格中创建行的更简洁的方法(表格之间有关联).但是在上面的代码中,我期待代码看起来像这样:
@line_item = @cart.line_items.build(product_id => params[:product_id])
Run Code Online (Sandbox Code Playgroud)
我不明白为什么作者必须存储整行产品(product = Product.find(params [:product_id]))而不是仅仅获取product_id ...
还有比我能理解的更多的东西吗?
我是铁杆和红宝石的新手.我正在研究类和实例变量的概念.我明白了区别,但是当我在轨道上使用控制器尝试它时,让我感到困惑.我所做的是在类方法之外声明了一个类和实例变量:
class BooksController < ApplicationController
# GET /books
# GET /books.json
@@world = "Hello World"
@insworld = "my hobby"
def index
@books = Book.all
binding.pry
respond_to do |format|
format.html # index.html.erb
format.json { render json: @books }
end
end
end
Run Code Online (Sandbox Code Playgroud)
我的印象是@insworld具有"我的爱好"的价值,但是当我在里面时,当我试图检查@insworld的价值时index method,@ insworld返回了一个零值.@@ world具有"Hello World"的价值.那么这里发生了什么?它们不是在同一个类中定义的吗?