Есть ли способ вызвать метод для данных, загруженных в форму ввода в Rails?(В частности, текстовое поле) - PullRequest
0 голосов
/ 03 июля 2011

Я использую Rails 3.0.5, и по причинам, указанным в этот вопрос , мне нужно вызвать метод utc_to_local для ввода text_field для даты и времени.

Я пытался вызывать метод различными способами непосредственно в представлении (в качестве отправной точки), но, похоже, я не могу найти волшебную смесь (ранее не вызывал метод в поле формы).

/ events / edit.html.erb (полный файл):

<h1>Edit This Event</h1>
<%= form_for(@event) do |f| %>
    <%= render 'fields', :f => f %>
    <div class="actions">
        <%= f.submit "Update Event" %>
    </div>
<% end %>

events / _fields.html.erb (только соответствующие строки:)

<div class="field">
    <%= f.label      :time_start, "Start Time" %><br />
    <%= f.text_field  :time_start, :class => "datetimefield" %>
</div>

1 Ответ

1 голос
/ 03 июля 2011

Чтобы ответить прямо:

<%= f.text_field  :time_start, :value => f.object.time_start.try(:method_name) :class => "datetimefield" %>

Но ... почему бы тебе не использовать in_time_zone?

Time.now.in_time_zone("Eastern Time (US & Canada)")

Что приведет к созданию помощника по приложениям:

def time_zoned(string)
  return nil if string.nil?
  begin 
    time = Time.parse(string)
  rescue
    return nil
  end
  time.in_time_zone("Eastern Time (US & Canada)")
end

А по вашему мнению:

<%= f.text_field  :time_start, :value => time_zoned(f.object.time_start) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...