1

フォームからコントローラーのパラメーターを取得しています。フォームからハッシュを削除し、後で使用するために変数に入れます。

パラメータに次のものが含まれているとします。

@form_data = params[:project] // <-- :id, :title, :description, :members

':members' は配列 (チェックボックスから取得) であり、後で使用するためにその配列を新しい変数に入れ、param から削除する必要があります。

@members // <-- should contain :members 

@project = Project.new(params[:project])  // <-- ':members' is removed

これはどのように行うことができますか?

4

3 に答える 3

7

削除メソッド を使用できます

@members = params[:project].delete(:members)
@project = Project.new(params[:project])
于 2013-02-09T17:03:26.783 に答える
5

これには、少なくとも 2 つのオプションがあります。

1) プロジェクトを初期化するときにメンバー キーを無視する

@members = params[:project][:members]
@project = Project.new(params[:project].except(:members))

2) params オブジェクトから members キーを削除します

@members = params[:project].delete(:members)
@project = Project.new(params[:project])
于 2013-02-09T17:04:24.007 に答える
1

次のようなことができます:

 before_filter :edit_params_hash, :only => [:create]


 def edit_params_hash
      @members = params[:projects][:members] if params[:projects][:members].present?
      params[:projects][:members] ||= nil
 end

そして、作成時に使用します

def create
     @project = Project.new(params[:project])
     @project.save
     @project.members = @members
end

:)

于 2013-02-09T17:06:56.813 に答える