关注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>
Run Code Online (Sandbox Code Playgroud)
question.rb
accepts_nested_attributes_for :questions, :allow_destroy => true
Run Code Online (Sandbox Code Playgroud)
surveys_controller.rb
def survey_params
params.require(:survey).permit(:name, :questions_attributes => [:id, :content, :answers_attributes => [:id, :response]])
end
Run Code Online (Sandbox Code Playgroud)
我正在删除表单上的字段点击罚款,但记录尚未删除.
谢谢
编辑: JS设置隐藏变量
jQuery ->
$(document).on 'click' , ".remove_fields" , (event) ->
$(this).prev('input[type=hidden]').val('1')
$(this).closest('fieldset').hide()
event.preventDefault()
Run Code Online (Sandbox Code Playgroud)
@Hitham S. AlQadheeb可能是对的 - 检查你的模型是否正确......
survey.rb
class Survey < ActiveRecord::Base
has_many :questions, :dependent => :destroy
accepts_nested_attributes_for :questions
end
Run Code Online (Sandbox Code Playgroud)
和问题.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
Run Code Online (Sandbox Code Playgroud)
Unpermitted parameters: _destroy然而,错误实际上应该是指你的控制器对强参数的实现:survey_params.您需要告诉rails您的表单将通过该:_destroy字段.试试这个:
def survey_params
params.require(:survey).permit(:name, :questions_attributes => [:id, :content, :_destroy, :answers_attributes => [:id, :response, :_destroy]])
end
---------------------------------------------------------------------------------^
-------------------------------------------------------------------------------------------------------------------------------------^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1515 次 |
| 最近记录: |