ruby-on-rails – 删除嵌套属性时未允许的属性_destroy

关注railscast#196但使用Rails 4 – 我在尝试从问题父模型中删除答案时遇到了问题.

未允许的参数:_destroy

_answer_fields.html.erb

<fieldset>                                                                                                                                                                                                  
    <%= f.text_field :response %>                                                                                                                                                                       
    <%= f.hidden_field :_destroy %>                                                                                                                                                                                                                                                                                                                                                                                 
    <%= link_to "remove","#",class: "remove_fields" %>                                                                                                                                               
</fieldset>

question.rb

accepts_nested_attributes_for :questions,:allow_destroy => true

surveys_controller.rb

def survey_params                                                                                                                                                                                       
  params.require(:survey).permit(:name,:questions_attributes => [:id,:content,:answers_attributes => [:id,:response]])                                                                              
end

我正在删除表单上的字段点击罚款,但记录尚未删除.

谢谢

编辑:JS设置隐藏变量

jQuery ->                                                                                                                                                                                                   
        $(document).on 'click',".remove_fields",(event) ->                                                                                                                                              
                $(this).prev('input[type=hidden]').val('1')                                                                                                                                                 
                $(this).closest('fieldset').hide()                                                                                                                                                          
                event.preventDefault()

解决方法

@Hitham S. AlQadheeb可能是对的 – 检查你的模型是否正确……

survey.rb

class Survey < ActiveRecord::Base
  has_many :questions,:dependent => :destroy
  accepts_nested_attributes_for :questions
end

和问题.rb

class Question < ActiveRecord::Base
  belongs_to :survey
  has_many :answers,:dependent => :destroy
  accepts_nested_attributes_for :answers,:reject_if => lambda { |a| a[:content].blank? },:allow_destroy => true
end

不允许的参数:_destroy错误实际上应该指的是你的控制器的强参数的实现:survey_params.你需要告诉rails你的表单将传递:_destroy字段.试试这个:

def survey_params                                                                                                                                                                                       
  params.require(:survey).permit(:name,:_destroy,:response,:_destroy]])                                                                              
end
---------------------------------------------------------------------------------^
-------------------------------------------------------------------------------------------------------------------------------------^

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...