こんにちは。
私は、Rails 5アプリケーションのログプロセスをapplication controller
の中に作成しています。私はbefore_save
プロパティを持つ多くのコントローラ内のログプロセスを呼び出すためにそこに作成しています。ログは、ユーザがform
に行った変更をedit view template
に保存します。問題は、の中に<ObjectController:>
を入れることができないことです。私はすでにinstance variable
をコントローラから取得しましたが、コントローラオブジェクトからstrong parameters
を取得する必要があるため、ObjectController
も必要です。 strong parameters
は、ユーザーが入力フィールドに挿入したすべてのデータを保持します。アプリケーションコントローラのコントローラオブジェクトとコントローラの強力なパラメータを取得する
これは私がすでにやったです:
アプリ/コントローラ/アプリケーションコントローラ
def log
@controlr = instance_variable_get("@#{controller_name.singularize}") #get the edited object
attribs = @controlr.attribute_names #get object table column names
edited_data = controlr_params #stuck here!
ctrlr = @controlr.attributes #retrive object data from db
...
##compare the edited_data with the actual data from db and check if something was changed
end
だから、私は、ユーザー場合と比較するために、強力なパラメータにアクセスするコントローラオブジェクトを取得する必要があります任意のデータを編集しました。私はこれが最良の方法であるか、これを行うための練習であるかはわかりません。より良い方法があれば、私は知りたいです。しかし、私はデータログを必要とする多数のコントローラーでこのプロセスを呼び出す必要があります。あなたの時間と残念に任意の悪い英語のための
おかげ..
答えは@Vladvです。アプリケーションコントローラ内で「self」を使用すると、コントローラオブジェクトが返されます。しかし、今、私は "entity_controller"内の "entity_params"プライベートメソッドを取得する必要があります。このメソッドを印刷しようとすると、「paramが見つからないか、値が空です:Entities」というエラーがスローされます。 privateメソッドを返す新しいメソッドを定義すると、#というプライベートメソッド 'testeParams 'がスローされます。これらのパラメータを取得するにはどうすればよいですか? –
Chimmichunga