2011-05-25 13 views
2

我試圖找到一種在用戶提交文章時大寫所有標題和標籤的第一個字母的方法。我可以使用大寫方法,但是我可以將它添加到控制器代碼塊中以使其工作?Rails - 資本化文章標籤和標題

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 
... 
+0

你使用某種插件來做標籤嗎? – 2011-05-25 11:36:36

+0

@Douglas - 沒有插件正在使用 – ubique 2011-05-25 12:43:20

回答

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 
+0

我想你會在模型中添加函數,而不是使用示例的控制器?你能幫我用這個代碼塊嗎(上面已經發布)? – ubique 2011-05-25 17:24:57

+0

我更新了我的回答,以更好地適應您的情況。 – 2011-05-25 18:03:48

+0

這個作品完美。 Thx爲您提供幫助 – ubique 2011-05-25 20:00:28

0

嘗試使用.capitalize

例如「標題」.capitalize將使「標題」

+0

在代碼中我添加.capitalize? – ubique 2011-05-25 12:41:39

3

你打算如何資本化它?保存在數據庫中之前?或者當你向用戶展示時?

有兩種方法可以這樣:

使用鐵路的titleize functioncapitalize

或不使用CSS它:

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

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

我想在進入db – ubique 2011-05-25 12:40:42

+0

之前保存它有什麼區別?無論如何,在你的控制器攔截你想要大寫的參數,然後調用.capitalize或.titleize – corroded 2011-05-25 13:45:42

+0

我喜歡css的方法,但使用.capitalize/.titleize將是一個新的方式爲我做這個,所以我急於嘗試它。我在哪裏將它們放在控制器代碼塊中? – ubique 2011-05-25 17:21:24

0

正如弗朗西斯說,在你的控制器使用.capitalize

我用這個

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

謝謝。當我添加它時,這種方法會引發錯誤。已經添加了我的控制器代碼塊以查看是否有人仍然可以幫助! – ubique 2011-05-25 17:19:42