小编irk*_*der的帖子

对于字符串,rails是否与'humanize'相反?

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)

ruby-on-rails

65
推荐指数
1
解决办法
2万
查看次数

将Gollum wiki部署到Heroku

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)

rake heroku sinatra

12
推荐指数
1
解决办法
4418
查看次数

如何从params或session中分配值,以哪个存在?

执行以下操作的"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-kochjdeseno):

@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)

ruby ruby-on-rails

0
推荐指数
1
解决办法
1047
查看次数

标签 统计

ruby-on-rails ×2

heroku ×1

rake ×1

ruby ×1

sinatra ×1