0

コントローラーにデータを送信する ajax リクエストがありますが、データベースに保存する前にハッシュに要素を追加したいと考えています。

私の既存のハッシュは次のようになります。

{"application_field_attributes"=>{"0"=>{"id"=>"10"}}}

私も elements を持っておりparams[:xposition]params[:yposition]上記のハッシュに追加して、次のようにします。

{"application_field_attributes"=>{"0"=>{"id"=>"10", "xposition"=>"1", "yposition"=>"0"}}}

これを行うにはどうすればよいですか?

編集

これを行っている理由は、ドラッグ可能な要素がグリッドにドロップされた場所を追跡しようとしているからです。

私のajax呼び出しでは、グリッドに配置したいくつかの「data-id」属性から取得したxとyの位置を渡します。

私のコントローラーメソッドでは、現在持って@application.update_attributes(params[:application])いますが、xpositionとypositionが含まれていないため、それらをハッシュに挿入しようとしています。

update_attributes コマンドの後でコントローラーの x と y の位置を手動で更新するのがより良い解決策でしょうか?

したがって、次のようになります。

@application.update_attributes(params[:application])
@application.update_xposition(params[:xposition])
@application.update_yposition(params[:yposition])
4

1 に答える 1

1

あなたはそれを別の方法でやりたいかもしれません。

たとえば、フォームに xposition と yposition を使用して非表示のフィールドを作成することをお勧めします。

何をしようとしているのか、x/y 位置とは何か (アプリケーションごとに異なる場合、どこから来たのか) について詳しく教えてください。

ただし、質問に答えるには:

app_attrs = {"application_field_attributes"=>{"0"=>{"id"=>"10"}}}
app_attrs["application_field_attributes"]["0"].merge!({
    "xposition" => params[:xposition],
    "yposition" => params[:yposition]
})

でも、もし私があなただったら、そんなことはしません。

于 2013-01-21T02:42:51.720 に答える