2016-09-23 89 views
0

我有一个使用某些生成的脚手架的Ruby on Rails应用程序。 现在,在其中一个我需要添加一个最初没有计划的参数。不允许使用Rails脚手架参数

情况是,我有两个对象:块和关键字。它们之间的关系是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 

注意“关键词:[]”,还请注意,我也离开了“:关键字”键,当你发送一个空值的时候也允许参数(例如你要删除所有的关键字)。

+0

你好!你的代码我得到这个错误:.../blocks_controller.rb:92:语法错误,意外',',期待=> ...,关键字:[],:block_type_id,:module_keyword_id,:playlis ...。 ..^ – ste

+0

我的不好,你必须把“关键字:[]”放在最后,我会编辑我的答案。 – arieljuod