0

フォームを送信すると、次のパラメーターを取得しています。

Parameters: {"utf8"=>"✓", "authenticity_token"=>"3434343445=", "form"=>{"requested_user"=>"user@example.com"}, "form_type"=>"repository_creator", "gitcategory"=>{"name"=>"mechanical"}, "svncategory"=>{"name"=>"sales"}, "commit"=>"Submit"}

r はモデルのフォームのフィールドであるため、私のモデルself.requested_userでは利用できます。requested_useしかし、のような他の値svncategorygitcategory、データベースに保存されておらず、モデルの一部でもない選択タグから渡されます。どこにも保存したくないので、htmlドロップダウンリストだけで渡しています。

svncategory's nameその変数、つまりモデルにsvncategory's名前を付けるにはどうすればよいですか。

4

1 に答える 1

1

コントローラーに渡されるパラメーターは、変数を通じて使用できますparamsparams[:svncategory].inspectになり{"name"=>"sales"}ます。

変数はコントローラー レイヤーからのparamsみアクセスできるため、必要なパラメーターをモデルに渡す必要があります。

モデルに attr_acccessors を追加することでこれを解決できます。

class YourModel < ActiveRecord::Base
  attr_accessor :gitcategory, :svncategory
end

オブジェクトをインスタンス化するときに属性を手動で設定します。

your_model = YourModel.new(params[:form])
your_model.gitcategory = params[:gitcategory][:name]
your_model.svncategory = params[:svncategory][:name]

理想的な解決策ではありませんが、問題は解決します。

于 2013-02-15T10:46:20.590 に答える