2016-09-23 6 views
0

私はRuby on Railsアプリケーションをいくつか生成した足場を持っています。 さて、そのうちの1つでは、最初に計画されていなかったパラメータを追加する必要があります。Railsの足場パラメータは使用できません

状況としては、ブロックとキーワードの2つのオブジェクトがあります。それらの関係はhas_and_belongs_to_manyです。そうすれば、多くのキーワードを多くのブロックに関連付けることができ、その逆も可能です。 作成中にオブジェクトブロックにいくつかのキーワードを追加するオプションを追加したいと思います。

私は/views/blocks/_form.html.erbファイルに次のコードを追加しました:私は、同様のコントローラにパラメータを追加

<div class="field"> 
    <%= f.label :keywords %><br> 
    <%= f.collection_select(:keywords, @keywords.order(:name), :id, :name, {include_blank: true}, {:multiple => true}) %> 
    </div> 

def block_params 
    params.require(:block).permit(:name, :title, :description, :price, :instagram, :image, :main, :action, :keywords, :block_type_id, :module_keyword_id, :playlist_id) 
end 

をもかかわらず、私はログ

Unpermitted parameter: keywords 
にこのメッセージが表示されます

キーワードはブロックに追加されません。 私は何が欠けていますか?

答えて

0

パラメータが配列であるとき、あなたはこのを持つ配列としてそれを許可する必要があります。

def block_params 
    params.require(:block).permit(:name, :title, :description, :price, :instagram, :image, :main, :action, :block_type_id, :module_keyword_id, :playlist_id, :keywords, keywords: []) 
end 

ノート「のキーワード:[]」は「:キーワード」キー、また私も残っていることに注意してください空の値を送信するときにparamを許可します(たとえば、すべてのキーワードを削除する場合)。

+0

こんにちは!あなたのコードで私はこのエラーが発生します:.../blocks_controller.rb:92:構文エラー、予期しない '、'、予期する=> ...、キーワード:[]、:block_type_id、:module_keyword_id、:playlis ...。 ..^ – ste

+0

私の悪い、あなたは最後に "キーワード:[]"を入れなければならない、私は私の答えを編集します。 – arieljuod

関連する問題