小编lul*_*ala的帖子

Form_for,型号名称与控制器不同

我有一个名为的模型Person,我希望有一个名为的资源Employee.我发现这会阻止form_for魔法.

我需要传入@person对象本身,因此form_for可以选择正确的操作路径(创建或更新).

然而,这将意味着form_for使用POST people_pathPUT person_path输出,而不是employee_paths.

当我的模型和控制器有不同的名称时,是否可以拥有所有Rails约定的好东西?

ruby-on-rails ruby-on-rails-3

4
推荐指数
2
解决办法
6556
查看次数

Haml:如何生成动态id

我在erb中有以下代码可以正常工作:

<div id='flash_<%= flash.keys.first.to_s %>'>
    <%=h    flash[flash.keys.first] %>
</div>
Run Code Online (Sandbox Code Playgroud)

我想把它转换为haml:

#flash_#{flash.keys.first.to_s}
  =h flash[flash.keys.first]
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

Illegal element: classes and ids must have values.
Run Code Online (Sandbox Code Playgroud)

这是奇怪的,因为有IS值,'flash_'部分始终存在,即使我这样做,我也会得到错误:

#flash_#{nil.object_id}
Run Code Online (Sandbox Code Playgroud)

显然我的Ruby插值在haml中有些不对劲,但我无法做到.根据文档http://haml.info/docs/yardoc/file.REFERENCE.html#ruby_interpolation_# {}用于内插Ruby,它适用于这种情况:

#flash_
  #{flash.keys.first.to_s}
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的.

总之,我想得到以下输出:

<div id="flash_foo"> blahblah </div>
Run Code Online (Sandbox Code Playgroud)

但它也可以:

<div id="flash_"></div>
Run Code Online (Sandbox Code Playgroud)

如何用haml获得?

haml ruby-on-rails string-interpolation

4
推荐指数
1
解决办法
4056
查看次数

MySql查询结果的ORDER BY方向不同

我正在尝试对我无法弄清楚的 mysql 查询进行一些排序。

id | status | created_at
------------------------
 1 | open   | 1348778070
 2 | closed | 1348711241
 3 | open   | 1348839204
 4 | closed | 1348738073
 5 | banned | 1348238422
Run Code Online (Sandbox Code Playgroud)

我如何对上表进行排序,以便按 ASC 顺序首先显示“打开”记录;然后非打开记录在 DESC 顺序中排第二?换句话说,是否有基于某种条件的动态二级排序方向?

我尝试了两个 SELECT 查询的 UNION 并在其中排序,这不起作用,因为 UNION 默认情况下会生成一组无序的行。

此外,我尝试了一个伪列,它从大量数字中减去 created_at 时间戳,对于关闭的状态记录,所以我可以按 ASC 订购以获得如下结果......

SELECT table.*, (table.created_at) as tmp_order FROM table
  WHERE table.status = 'open'
UNION
  SELECT table.*, (999999999 - table.created_at) as tmp_order FROM table
WHERE table.status = 'closed'
ORDER BY tmp_order ASC …
Run Code Online (Sandbox Code Playgroud)

mysql sql-order-by

4
推荐指数
1
解决办法
2147
查看次数

如果类方法被覆盖,则访问类

这是一个外部类,其class方法已被覆盖。

class Foo
  def class
    "fooo"
  end
end

class Boo < Foo
end

class Moo < Foo
end
Run Code Online (Sandbox Code Playgroud)

现在,我有一个子类的实例。是否可以找出它属于哪个类?

foo.class # currently returns 'fooo', I want get Boo or Moo.
Run Code Online (Sandbox Code Playgroud)

ruby

4
推荐指数
3
解决办法
104
查看次数

保留Rails中的时区

如果我有一个"Wed, 22 Jun 2011 09:43:58 +0200"来自客户端的表单的时间字符串,我希望保存它的时区.这很重要,因为重要的不仅是绝对的UTC时间,还有时区.

Time.zone.parse(t)将时间转换为当时Time.zone正在使用的区域,丢失源时区.

我是否必须从上面的字符串中手动提取时区,或者是否有惯用的方法来执行此操作?

timezone datetime ruby-on-rails

3
推荐指数
1
解决办法
3222
查看次数

使用命名空间部署时出现capistrano错误

cap deploy:migrate突然停止了工作,但出现了错误:

*** [err :: 1.2.3.4:2222] bash: -c: line 1: syntax error: unexpected end of file command finished in 559ms
failed: "/usr/local/bin/rvm-shell 'ruby-1.9.2-p0@gemset' -c 'cd /home/user/app/releases/20111122182205 && #<Capistrano::Configuration::Namespaces::Namespace:0xa6a0cc> RAILS_ENV=staging  db:migrate'" on 1.2.3.4:2222
Run Code Online (Sandbox Code Playgroud)

显然这个错误与这不是一个有效的命令有关... #<Capistrano::Configuration::Namespaces::Namespace:0xa6a0cc>

但我不知道最近会发生什么变化可能导致它.有任何想法吗?

更新

我对我的代码没有任何改变,但我可能已经摆弄了环境.我想知道是否可能是由于不同的宝石和capistrano的版本.看起来有或没有bundle exec调用之间存在不同的版本.

ruby capistrano ruby-on-rails

3
推荐指数
1
解决办法
896
查看次数

引发OpenURI :: HTTPError会导致错误的参数错误

我正在测试一个方法如何处理302 HTTPError异常.我试图将一个方法调用存根以编程方式引发一个,但是它继续抱怨错误的参数数量错误(0表示2)

代码测试了这个特定的行:

document = Nokogiri.HTML open(source_url)
Run Code Online (Sandbox Code Playgroud)

在规范中,我将其描述为:

subject.stub(:open).and_raise(OpenURI::HTTPError)
subject.should_receive(:ended=).with(true)
subject.update_from_remote
Run Code Online (Sandbox Code Playgroud)

我不认为它与Nokogiri.HTML()或Open-uri.open()有关,为什么会发生这种情况呢?

另外,我如何尝试将此HTTPError作为302重定向错误?谢谢

ruby open-uri rspec exception

3
推荐指数
1
解决办法
1686
查看次数

rubysdl与ruby-sdl-ffi

谁能在这里告诉我Ruby宝石rubysdlruby-sdl-ffi速度差异之间的区别?如果是这样,更喜欢哪一个?我想知道我写的是我的宝石,Rubydraw(位于这里).

提前致谢!

ruby gem sdl rubygems ffi

3
推荐指数
1
解决办法
1323
查看次数

如果符合条件,则进行Rails验证

我有这个验证

 validates :contact_id, :presence => true, :uniqueness => {:message => 'has an account already.'}
Run Code Online (Sandbox Code Playgroud)

在application.rb模型中

一切都很好,但如果状态"无效",我只需要进行此验证

例如,在应用程序表中有一个被调用的字段state,如果有contact_id一个用户的应用程序且状态为"无效",则此验证不应生效,应让用户保存应用程序

validation ruby-on-rails ruby-on-rails-3

3
推荐指数
1
解决办法
2668
查看次数

rails开发环境循环依赖错误

昨晚我觉得我做了一些能够改变轨道开发环境的东西,而且我无法扭转我所做的事情.

我将更新迁移到生产中,并且在预编译样式表时遇到一些问题,因此我退出了更改并决定在我的开发计算机上尝试预编译.

长话短说,预编译在我的开发机器(本地)上失败但是当我试图启动我的测试系统时我得到了这个错误:

Devise/sessions中的Sprockets :: CircularDependencyError #new

/app/assets/stylesheets/application.css已被要求

我确定这与我尝试的预编译有关,即使它失败了,因为在此之前一切正常.

我尝试进行预编译:清除因为我读到了某个会反转/删除预编译的地方.

我在这里错过了什么吗?预编译是否会更改我需要手动重置的配置文件?

这是在Ubuntu 11.10上运行的rails 3.1.

ruby-on-rails precompile ruby-on-rails-3.1 asset-pipeline

3
推荐指数
1
解决办法
4296
查看次数