私は、のUser
とCategory
のProduct
モデルを持っています。 new
製品フォームには、Name(テキスト)、Category(選択)、Price(テキスト)のフィールドしかありません。初心者のレール3:私はこの「作成」方法を正しくやっていますか?
これは私がproducts/new.html.haml
にカテゴリの選択フィールドを作成する方法である:
def create
@product = Product.new(params[:product])
if @product.save
# do something
else
render 'new'
end
end
しかし、私は必要となってしまった:
ProductsController
で
= f.collection_select :category, Category.all, :id, :name
、私はこれだけを行う必要があると思いました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)「フォーマット」の価格は正しく設定されていますか?それはモデルにあるはずのようですが、コントローラーを過ぎても動作させることはできませんでした。
ありがとうございます!