Текущая дата в виде рельсов - PullRequest
2 голосов
/ 24 мая 2010


Я изучаю рельсы, немного изучаю книгу и создаю простое приложение с дополнительными функциями по мере того, как я увеличиваю свои знания.Я пишу простое приложение для блога, и у меня есть поле в форме с именем добавлено, я не хочу, чтобы это было поле, я хочу, чтобы оно получало дату с сервера и автоматически помещало ее в базу данных.Как я буду делать это?Я думал о скрытом поле, но потом не знал, как обработать дату и вставить ее в скрытое поле.Это неправильный путь?
Заранее спасибо,
Дин

Ответы [ 3 ]

7 голосов
/ 24 мая 2010

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

def SomeController
  #...
  def create
    @model = Model.new params[:model]
    @model.date_field_name = Time.now
    if @model.save
      # whatever should be done if validation passes or
      redirect_to @model
    else
      # whatever should be done if validation fails or
      render :new
    end
  end
  #...
end

Но у вас нетчтобы сделать все это, потому что ruby ​​на рельсах предлагает две колонки created_at и updated_at.created_at будет установлено, когда объект будет создан, и updated_at будет устанавливаться каждый раз, когда вы обновляете этот объект.

1 голос
/ 24 мая 2010

вот представление (новое) формы, отображающей текущую дату:

<% form_for(@recipe) do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </p>
  <p><b>date</b><br/>
    <%= f.datetime_select :date %>
  </p>
  <p>
    <%= f.label :instructions %><br />
    <%= f.text_area :instructions %>
  </p>
  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>

<%= link_to 'Back', recipes_path %>

и контроллер:

def new
  @recipe = Recipe.new

  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @recipe }
  end
end
0 голосов
/ 24 мая 2010

В Rails, если вы присваиваете своим моделям атрибуты с определенными именами, тогда ActiveRecord дает им особое поведение. Существует четыре разных типа даты / времени:

  • created_on: автоматически устанавливается дата создания записи
  • created_at: автоматически устанавливается дата и время создания записи
  • updated_on: автоматически устанавливается дата обновления записи
  • updated_at: автоматически устанавливается дата и время обновления записи

Обычно пара created_at / updated_at автоматически добавляется в модель с помощью объявления t.timestamps в связанной модели ActiveRecord Migration .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...