为什么time_field无法在rails中的“编辑”操作中显示已保存的数据

时间:2016-05-02 03:06:37

标签: ruby-on-rails ruby

我在创建新讲座的表单中使用time_field中的'new' action (lectures/new.html.erb)time_field在我的应用中有一个默认时间格式(),只允许用户更改':'之前和之后的数字。 但是,当我在表单中使用time_field(edit.html.erb)进行显示和更新时,时间字段为空。 所以我需要再次输入那个时间。控制器没有问题,所有其他数据在“编辑”表单中正确显示。 如何在lecture.new中显示开始时间作为编辑中的默认值?

 <%=label_tag "Start Time" %><br>
 <%= f.time_field :start_time, :class => "form-control", :placeholder => "Example: 10:00" %>

顺便说一句,占位符信息不会出现在'text-field'中。

2 个答案:

答案 0 :(得分:3)

<%= form_for @lecture do |f| %>
  <%= label_tag "Start Time" %><br>
  <% if @lecture.new_record? %>
    <%= f.time_field :start_time, :class => "form-control", :placeholder => "Example: 10:00" %>
  <% else %>
    <%= f.time_field : start_time , value: "#{@lecture.start_time}" %>
  <% end %>
<%- end %>

我也面临着同样的问题,但是我已经修复了使用此逻辑/代码的问题。 我希望这将帮助您在“编辑”操作中显示已保存的数据。

答案 1 :(得分:0)

因为你要传递的不是符号,而是实际的记录值,所以你会得到这样的东西:

<%= form_for @lecture do |f| %>
   <%= label_tag "Start Time" %><br>
   <%= f.time_field :start_time, :class => "form-control", :placeholder => "Example: 10:00" %>
<%- end %>

当然,您必须确保为编辑操作正确设置了@lecture,其方式如下:

 @lecture = Lecture.find_by_id(params[:id])