我有一个应用程序,用于为许多员工计划工作班次。我有一个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 %>
模式:
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=>:input}'为"08.00":String"错误,我已经尝试切换最佳位置类型到其他输入-没有帮助..
best_in_place
方法接受两个强制参数;一个对象(在您的例子中是shift
)和一个字段(shiftstart
和shiftend
),然后是选项的可选散列(:type => :input
)。所以你的代码需要像这样:
<%= best_in_place shift, :shiftstart, :type => :input, :display_with => Proc.new { |f| f.strftime("%H.%M") } %>