我无法理解我的这不起作用。当用户创建新页面(使用 Ruby on Rails)时,我正在尝试添加一种方法来从页面标题创建 slug。
这是我的创建方法:
def create
@page = Page.new(params[:page])
@page.user_id = current_user.id
@page.slug = @page.title.to_slug
respond_to do |format|
if @page.save
format.html { redirect_to @page, notice: 'Page was successfully created.' }
format.json { render json: @page, status: :created, location: @page }
else
format.html { render action: "new" }
format.json { render json: @page.errors, status: :unprocessable_entity }
end
end
结尾
这是我在同一个控制器底部的方法。(pages_controller.rb):
def to_slug(param=self.slug)
# strip the string
ret = param.strip
#blow away apostrophes
ret.gsub! /['`]/, ""
# @ --> at, and & --> and
ret.gsub! /\s*@\s*/, " at "
ret.gsub! /\s*&\s*/, " and "
# replace all non alphanumeric, periods with dash
ret.gsub! /\s*[^A-Za-z0-9\.]\s*/, '-'
# replace underscore with dash
ret.gsub! /[-_]{2,}/, '-'
# convert double dashes to single
ret.gsub! /-+/, "-"
# strip off leading/trailing dash
ret.gsub! /\A[-\.]+|[-\.]+\z/, ""
ret
end
slug 方法来自这个问题: Best way to generate slugs (human-readable IDs) in Rails
我不明白为什么这会产生方法未定义的错误或如何修复它。任何帮助,提示或答案表示赞赏。:)