私は と へのモデルを持っていProduct
ます。製品フォームには、名前 (テキスト)、カテゴリ (選択)、価格 (テキスト) のフィールドしかありません。belongs_to
User
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 オブジェクトをロードし、(ロケールに依存する) 価格の通貨表現を 10 進数に変換するコードを追加する必要がありました。だからこれは私が働いたものです:
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)価格の「フォーマット」を正しく行っていますか? モデルにあるはずのようですが、コントローラーを超えて機能させることができませんでした。
ありがとう!