0

スーパークラスとしてアイテムがあり、その下に2つのサブクラスがあります。

ユーザーが最初に情報を入力するとき、入力パラメーターはのハッシュに含まれますparams[:item]。そして、入力に応じて具象型をインスタンス化します。

# instantitate the concrete type according to the input
type_of_item = Object::const_get(inputs[:type])
@item = type_of_item.new

検証に失敗した場合、ユーザーを新しいページに戻します。ユーザーがデータを再入力しました

ただし、今回は、入力パラメータがのハッシュに含まれるparams[:bidding_item]params[:direct_item、bidding_itemとdirect_itemがItemのサブクラスである場合に含まれます。

私は次のようなことをしようとします:

format.html do
  @item.becomes(Item)
  render :action=>"new"
end

毎回同じ方法でデータを取得できるように、毎回入力パラメーターが含まれることを願っていますがparams[:item]、機能しません。

今、私は私の問題を解決します。しかし、それはまったく良い習慣ではないと思います。

# form input
inputs = params[:item] || params[:bidding_item] || params[:direct_item]
4

1 に答える 1

2

newビュー ファイルで、:asオプションをform_forタグに追加できます。

form_for @item, :as => :item do |form|

params[:item]これは、オブジェクトの種類に関係なく、パラメーターが常に通過することを意味します。

于 2013-01-03T03:46:07.467 に答える