我有一个应用程序,用于计划许多员工的工作班次。我有一个Shift
模型,我将shiftstart
和shiftend
存储为Time
个对象。
我在表格中显示几天的页面上显示用户Shifts
。我们的想法是,用户可以使用Best In Place gem直接在此表中修改shiftstart
和shiftend
。
但我似乎无法弄清楚在处理Time对象时如何使其工作 - 任何人都有这方面的经验或建议。
我有以下代码:
查看:
<% @myShifts.where(:shiftdate => date).order(:shiftstart).each do |shift| %>
<div class="shift-item span">
<div class="hider">
<p>
<i class="icon gear"></i>
<%= best_in_place shift.shiftstart.strftime("%H.%M"), :type => :input %> - <%= best_in_place shift.shiftend.strftime("%H.%M"), :type => :input %>
</p>
</div>
</div>
<% end %>
SCHEMA:
create_table "shifts", :force => true do |t|
t.time "shiftstart"
t.time "shiftend"
t.integer "type_id"
t.integer "user_id"
t.string "note"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.date "shiftdate"
end
我得到一个“未定义的方法`{:type =&gt;:input}'for”08.00“:String ”错误,我已经尝试将Best In Place Type切换为其他类型输入 - 没有帮助..
答案 0 :(得分:4)
best_in_place
方法有两个必需参数;一个对象(在你的情况下为shift
)和一个字段(shiftstart
和shiftend
),然后是选项的可选哈希(:type => :input
)。所以你的代码必须是这样的:
<%= best_in_place shift, :shiftstart, :type => :input, :display_with => Proc.new { |f| f.strftime("%H.%M") } %>