2016-03-23 7 views
0

入れ子になったフォームを使用してプロジェクトを作成しましたが、選択肢に複数のオプションを追加しましたが、正しく保存されません。入れ子になった複数のオプションが保存されません

テーブル:

|users| 
    |id| |name|  |lastname| 
    1 Cristiano Ronaldo 
    2 Lionel  Messi 
    3 David  Beckham 
    4 Thomas  Muller 

|ejecutives| 
    |id| |name| 
    1 Mourinho 
    2 Guardiola 

|user_ejecutives| 
    |id| |user_id| |ejecutive_id| 
    1  1    1 
    2  1    4 
    3  2    3 
    4  2    2 

コントローラusers_controller.rb

def new 
    @user = User.new 
    @ejecutives = Ejecutive.where('id=1') 
    @user_ejecutives = @user.user_ejecutives.build 
end 

def create 
    @user = User.new user_params 
    @user.save 
end 

private 
def user_params 
    params.require(:user).permit(:name,:lastname, user_ejecutives_attributes: []) 
end 

モデル:

#User.rb 
has_many :user_ejecutives 
accepts_nested_attributes_for :user_ejecutives 

#Ejecutive.rb 
has_many :user_ejecutives 

#UserEjecutive.rb 
belongs_to :user 
belongs_to :ejecutive 

ビュー

<%= form_for @user do |f| %> 
    <%= form.text_field :name %> 
    <%= form.text_field :lastname %> 

    <%= f.fields_for :user_ejecutives do |builder| %> 
    <%= render 'user_ejecutive_fields', :f => builder %> 
    <% end %> 

<% end %> 

部分:

Parameters: {"utf8"=>"✓", "user"=>{"name"=>"sddasdas", "lastname1"=>"das","user_ejecutives_attributes"=>{"0"=>{"ejecutive_id"=>["", "1", "2"] }}} , "commit"=>"Save"} 
INSERT INTO `users` (`name`, `lastname1`, `created_at`, `updated_at`) VALUES ('David', 'Beckham', '2016-03-28 19:43:18', '2016-03-28 19:43:18') 
INSERT INTO `user_ejecutives` (`user_id`, `created_at`, `updated_at`) VALUES (68, '2016-03-28 19:43:18', '2016-03-28 19:43:18') 
COMMIT 

保存されていません。

http://code.runnable.com/VvMYsfuOOwtvL870/nested-form-listbox-multipe-options

は、問題は、その保存されていない複数選択である:ここでは

Select user ejecutives:  
<%= f.select :ejecutive_id, @ejecutives.collect { |e| [e.name,e.id] }, {prompt: "Select 2 or more"}, {:multiple => true, class: "input-lg"} %> 

が編集したデモプロジェクトですmysqlで選択された名前にNULLが表示される

答えて

0

は、サーバーコンソールを参照してください、それが

Unpermitted parameters: user_ejecutives_attributes 

あなたusers_params

params.require(:user).permit(:name, :lastname, user_ejecutive_ids: [] ) 

users_controllerの変化 user_ejecutive_ids

user_ejecutives_attributesにはそれが

+0

はい、私はそれをしたが、まだオプションを保存しません選択された。私はその記事を編集した。 –

0

を作品になるかもしれ語ります

コロン(:user_ejecutives_attributesではなくuser_ejecutives_attributes)を忘れないようにしてください。それはルビーのシンボルです。私が代わりに選択選択集合を取るだろう has_many :users, through: :user_ejecutives

ユーザモデルの変化:ejecutivesモデルで has_many :ejecutives, through: :user_ejecutives

変更に f.collection_select(:ejecutive_id, Ejecutive.all, :id, :name, {:include_blank => 'Please Select'})

+0

はい、私はそれをしましたが、まだ動作していません。 –

+0

私はそれをしましたhttp://code.runnable.com/VvMYsfuOOwtvL870/nested-form-listbox-multipe-options –

+0

私のログが挿入を行っていることを確認しますが、選択したオプションを保存していません。 NULLを保存しています –

関連する問題