Rails - 资本化文章标签和标题

时间:2011-05-25 10:26:36

标签: ruby-on-rails-3

当用户提交文章时,我试图找到一种方法来将所有标题和标签的第一个字母大写。我可以使用大写方法,但是在哪里可以将它添加到控制器代码块中以使其工作?

THX

控制器/ articles_controller:

def new
  @article = Article.new

  respond_to do |format|
   format.html # new.html.erb
   format.xml  { render :xml => @article }
 end
end

控制器/ tags_controller:

class TagsController < ApplicationController
    def show
      @tag = Tag.find(params[:id])
    @articles = @tag.articles
  end
end

模型/文章:

def tag_names
  @tag_names || tags.map(&:name).join(' ')
end

private

def assign_tags
  if @tag_names
    self.tags = @tag_names.split(/\,/).map do |name|
    Tag.find_or_create_by_name(name)
    end
  end
 ...

4 个答案:

答案 0 :(得分:3)

您打算将资本化的地方?在保存到数据库之前?或者当你向用户展示时?

有两种方法:

使用栏杆titleize functioncapitalize

或使用CSS执行:

 <p class="tag">im a tag</p>

 #CSS
 .tag {
   text-transform:capitalize;
 }

答案 1 :(得分:2)

我会做这样的事情来强迫他们在保存之前大写。

class Article < ActiveRecord::Base
  def title=(title)
    write_attribute(:title, title.titleize)
  end

  private

  def assign_tags
    if @tag_names
      self.tags = @tag_names.split(/\,/).map do |name|
        Tag.find_or_create_by_name(name.capitalize)
      end
    end
  end
end

答案 2 :(得分:0)

尝试使用.capitalize

e.g。 “title”.capitalize将成为“标题”

答案 3 :(得分:0)

弗朗西斯说,在你的控制器中使用.capitalize

我用这个

@article= Article.new(params[:article])
@article.name = @article.title.capitalize 
@article.save