Rails humanize()为字符串添加了一个方法,如下所示(来自Rails RDoc):
"employee_salary".humanize # => "Employee salary"
"author_id".humanize # => "Author"
Run Code Online (Sandbox Code Playgroud)
我想走另一条路.我有一个用户的"漂亮"输入,我想要"去人性化"来写入模型的属性:
"Employee salary" # => employee_salary
"Some Title: Sub-title" # => some_title_sub_title
Run Code Online (Sandbox Code Playgroud)
rails是否包含任何帮助?
在此期间,我将以下内容添加到app/controllers/application_controller.rb:
class String
def dehumanize
self.downcase.squish.gsub( /\s/, '_' )
end
end
Run Code Online (Sandbox Code Playgroud)
还有更好的地方吗?
谢谢,fd,链接.我已经实现了那里推荐的解决方案.在我的config/initializers/infections.rb中,我在最后添加了以下内容:
module ActiveSupport::Inflector
# does the opposite of humanize ... mostly.
# Basically does a space-substituting .underscore
def dehumanize(the_string)
result = the_string.to_s.dup
result.downcase.gsub(/ +/,'_')
end
end
class String
def dehumanize
ActiveSupport::Inflector.dehumanize(self)
end
end
Run Code Online (Sandbox Code Playgroud) Gollum是"一个简单的,Git驱动的wiki,带有甜蜜的API和本地前端."
它托管在GitHub上:http://github.com/github/gollum
它似乎是一个简单的Sinatra应用程序,因此,似乎应该很容易部署到Heroku.我似乎无法让它发挥作用.主要是因为我对Rake和config.ru文件几乎一无所知.
是否有可能将Gollum维基部署到Heroku?如果是这样,我的config.ru文件需要看起来像什么?
更新/编辑
LIB /咕噜/前端/应用程序:
module Precious
class App < Sinatra::Base
Run Code Online (Sandbox Code Playgroud)
这是从bin/gollum调用的
require 'gollum/frontend/app'
Precious::App.set(:gollum_path, gollum_path)
Precious::App.run!(options)
Run Code Online (Sandbox Code Playgroud) 执行以下操作的"Rails-way"或"Ruby-way"是什么:
在我的控制器中,我正在创建一个Options类的实例.如果params散列存在,它将使用params散列中的信息进行初始化.否则,它将检查会话哈希以获取信息.最后,如果params和session都没有所需的数据,它将使用默认值进行初始化.这是我现在正在做的事情(它工作正常,但看起来有点难看):
if params[:cust_options]
@options = CustomOptions.new( params[:cust_options] )
else
if session[:cust_options
@options = CustomOptions.new( session[:cust_options] )
else
@options = CustomOptions.new
end
end
session[:cust_options] = @options.to_hash
Run Code Online (Sandbox Code Playgroud)
就像我说的,一切都运行正常,我只是在寻找一种更加惯用的Ruby方式来编写这段代码.
这就是我的代码现在的样子(感谢henning-koch和jdeseno):
@options = CustomOptions.new( params[:cust_options] || session[:cust_options] || {} )
Run Code Online (Sandbox Code Playgroud)
如果我离开最后一个条件(|| {})离开那行代码,initialize当我的方法中既没有定义params [:cust_options]也没有定义session [:cust_options],或两者都是nil?
我的initialize定义如下:
def initialize( options = {} )
# stuff happens ...
end
Run Code Online (Sandbox Code Playgroud)