如何动态填充“input”标签的默认值

时间:2011-10-16 14:06:40

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

在我的投票系统中,我有input tag的“expire_at”。我想要做的是用input tag动态填充日期。日期是7天后。

例如,如果我对“expire_at”没有任何作用。默认情况下应该是2011-10-23。(2011-10-16 7天后),怎么样?

2 个答案:

答案 0 :(得分:1)

<%= f.text_field :expires_at, :value => @vote.new_record? ? Time.zone.now + 7.days : @vote.expires_at %>

答案 1 :(得分:1)

如果+7天是适用于任何地方的默认设置,请将其放入您的模型中:

在你的模特中:

class MyModel < ActiveRecord::Base

  def expires_at
    # I'm not sure if this works, if not
    # wrap it in a if-clause like:
    # read_attribute(:expires_at).present? ? read_attribute(:expires_at) : 7.days.from_now

    read_attribute(:expires_at) || 7.days.from_now
  end
end

在您看来:

<%= f.text_field :expires_at, @vote.expires_at.strftime('%Y-%m-%d') %>

如果它仅适用于一种特定形式,请像砖块的答案一样: (当然没有修改你的模型)

在您看来:

<%= f.text_field :expires_at, :value => (@vote.expires_at.present? ? @vote.expires_at : 7.days.from_now).strftime('%Y-%m-%d') %>