我有一个名为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>