Rails更新记录

时间:2014-07-14 16:49:44

标签: ruby-on-rails ruby activerecord

我有一个名为managers的数据库表,这里是schema.rb的相应部分

 create_table "managers", force: true do |t|
t.string   "fname"
t.string   "lname"
t.string   "company"
t.string   "phone"
t.string   "cell"
t.datetime "created_at"
t.datetime "updated_at"
t.integer  "plan_id"
t.string   "country"
t.string   "address"
t.string   "timezone"
t.string   "zipcode",     default: "0"
t.datetime "open_time"
t.datetime "close_time"
t.integer  "shifts"
t.integer  "shiftlength"
  end

在我的控制器中,我试图通过调用更新操作来更新它

def update
   @manager=Manager.find(params[:id])
   if @manager.update(manager_params)
     redirect_to manager_path(:id=>params[:id])
   else
     render action: 'edit'
   end
 end

 def manager_params
    params.require(:manager).permit :fname,
   :lname,
    :company,
   :country,
   :address,
   :timezone,
   :zipcode,
   :phone,
   :cell,
   :open_time,
   :close_time,:shifts,:shiftlength
 end

但更新操作会引发以下错误

undefined方法`each'代表“4”:String

值:shift和:shiftlength从数字输入字段中获取。我尝试使用to_i转换:shift和:shiftlengths到整数但是没有用。

然后给出了错误

未定义的方法`每个'为4:Fixnum

更新表格的相关部分

<div class="form-group">
    <%=m.label :number_of_shifts%><br />
    <%= m.number_field :shifts,:class=>"form-control",:value=>@manager.shifts %>
</div>
<div class="form-group">
    <%=m.label :shift_length%><br />
    <%= m.number_field :shiftlength,:class=>"form-control",:value=>@manager.shiftlength   %>
</div>

0 个答案:

没有答案