私有方法`更新'呼吁 #

时间:2014-11-29 05:11:31

标签: ruby-on-rails ruby

每当我尝试对Customer类进行更新时,我都会收到调用私有方法'update'的信息。

应用程序跟踪: app/controllers/customers_controller.rb:46:in `update'

所以,在代码中它就在这个函数中:

 43 def update
     44   @customer = Customer.find(params[:id])
     45 
     46   if @customer.update(customer_params)
     47     redirect_to @customer
     48   else
     49     render 'edit'
     50   end
     51 end

所以,我认为这个问题发生在我的客户模型中,即:

class Customer < ActiveRecord::Base
       include ActiveModel::ForbiddenAttributesProtection
   attr_accessible :name, :web_address, :notes
        belongs_to :location
        validates :name, presence: true,
                        length: { minimum: 5 }
end

然后在视图中:

  <%= form_for :customer, url: customer_path(@customer), method: :put do |f| %>
<div class="well center col-sm-10">
        <legend> Customer: </legend>
        <span class="row">
        <div class = "form-group col-sm-5">
                <%= f.label :name %><br />
                <%= f.text_field :name %>
        </div>

        <div class = "form-group col-sm-5">
                <%= f.label :web_address %> <br />
                <%= f.text_field :web_address %>
        </div>
        </span>
        <span class="row">
        <div class = "form-group col-sm-5">
                <%= f.label :notes %> <br />
                <%= f.text_field :notes %>
        </div>

        </span>

        <%= f.submit %>
<% end %>

我从未定义过一个名为update的私有函数,我不确定从哪里开始调试它。

2 个答案:

答案 0 :(得分:13)

对于少于4的Rails版本,您应该使用update_attributes

Persistence#update在Rails 4之前是私有的

答案 1 :(得分:-1)

您在定义private功能的位置上方update。将private命令和所有私有函数移动到文件的底部,因此私有函数不适用于更新方法。