问题描述
|
我试图找到一种在用户提交文章时将所有“标题和标签”的第一个字母大写的方法。我可以使用大写方法,但是在哪里可以将其添加到控制器代码块中呢?
谢谢
控制器/ 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
...
解决方法
我会做这样的事情来迫使他们在储蓄之前被大写。
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
,您打算在哪里资本化?在保存到数据库之前?或何时向用户显示?
有两种方法:
使用铁路的标题功能或大写
或通过以下方式使用CSS进行操作:
<p class=\"tag\">im a tag</p>
#CSS
.tag {
text-transform:capitalize;
}
,尝试使用.capitalize
例如\“ title \”。capitalize将成为\“ Title \”
,如弗朗西斯所说,在控制器中使用.capitalize
我用这个
@article= Article.new(params[:article])
@article.name = @article.title.capitalize
@article.save