rails 3 - 如果表单字段为空,则为此值

时间:2011-05-24 12:12:17

标签: ruby-on-rails forms

我的Rails 3应用程序中有一个名为Post的模型。

用户可以为这些帖子创建自己的网址。 (我称之为clean_url。)

如果用户没有填写此字段,我想在保存表单时自己从标题创建值。 (基本上使用@ post.title.to_s(一些注册表来删除空格等...)

如果项目保留为空白,那么在此字段中使用标题值保存项目的最佳方法是什么?

我假设在Posts控制器中创建动作我可以在保存时“更新_attributes”帖子但是我开始认为这可能是错的?

任何人都有关于如何实现这一目标的想法?

1 个答案:

答案 0 :(得分:2)

在模型中使用before_save回调和私有方法。以下内容直接来自我的博客来源。

before_save :create_clean_url

private

def create_clean_url
  if self.clean_url.blank?
    # Remove non-alpha characters. Replace spaces with hyphens.
    self.clean_url = self.title.downcase.gsub(/[^(a-z0-9)^\s]/, '').gsub(/\s/, '-')
  end
end