【问题标题】:Can't mass-assign protected attributes: _destroy - Ruby on Rails无法批量分配受保护的属性:_destroy - Ruby on Rails
【发布时间】:2012-10-25 22:54:31
【问题描述】:

我收到此错误:

"ActiveModel::MassAssignmentSecurity::DaysController#create 中的错误

无法批量分配受保护的属性:_destroy"

我什至不知道 _destroy 是一个属性!

我在做什么:

我的模型是我有很多“天”的“旅行”

在我的 Trips 模型的“显示”视图中,我正在渲染表单的部分内容以添加新的“日”:

<div id="day_form">
  <%= render :partial => "day_form", :day => @day %>
</div> 

我的模特:

class Trip < ActiveRecord::Base
  attr_accessible :title, :days_attributes
  has_many :days
  accepts_nested_attributes_for :days, allow_destroy: true

end


 class Day < ActiveRecord::Base
  attr_accessible :activity_id, :order, :summary, :trip_id, :activities_attributes
  belongs_to :trip
  has_many :activities, :order => 'position'
  accepts_nested_attributes_for :activities, allow_destroy: true 
end

当我提交表单时,我收到此批量分配错误。为什么?

编辑

“日”表格如下所示:

    <%= form_for(@day) do |f| %>

      <ul>
      <% @day.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

        <fieldset>
          <%= f.label :summary, "Day Summary" %><br />
          <%= f.text_area :summary, :rows => 1 %><br />
          <%= f.hidden_field :_destroy %>
              <%= link_to "remove", '#', class: "remove_fields" %>
        </fieldset>
        <div class="actions">
    <%= f.submit %>
        </div>
<% end %>

【问题讨论】:

  • 你的表单是什么样子的?
  • 好吧——我觉得很傻。我重用了这个代码的另一个表单有一个 _destroy 剩余的 hidden_​​field。抱歉,我是新手,但不应该犯这些愚蠢的错误。谢谢@Digi_Cazter
  • 没问题,很高兴您能找到问题所在。编码快乐!

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:
 module ApplicationHelper
  def link_to_remove_fields(name, f)
    text_field_tag(:_destroy) + link_to_function(name, "remove_fields(this)")
  end

替换f.hidden_field

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    相关资源
    最近更新 更多