我有一个Product
模型belongs_to
aUser
和 to a Category
。在new
产品表单中,我只有名称(文本)、类别(选择)和价格(文本)字段。
这就是我为类别创建选择字段的方式products/new.html.haml
:
= f.collection_select :category, Category.all, :id, :name
在ProductsController
,我想我只需要这样做:
def create
@product = Product.new(params[:product])
if @product.save
# do something
else
render 'new'
end
end
但我最终需要添加代码来加载 Category 对象并将价格的货币表示(取决于区域设置)转换为十进制。所以这就是我的工作:
def create
params[:product][:category] = Category.find(params[:product][:category])
# to_decimal is declared as a private method in ProductsController
# and returns a decimal number or nil if the price is invalid
params[:product][:price] = to_decimal(params[:product][:price])
@product = Product.new(params[:product])
if @product.save
# do something
else
render 'new'
end
end
所以我的问题是:
1)有没有办法让 Rails 自动加载类别?
2)我是否正确地“格式化”了价格?看起来它应该在模型中,但我无法让它通过控制器工作。
谢谢!