小编Bac*_*cko的帖子

从类名中检索控制器名称

我正在使用Ruby on Rails 3.0.7,我希望在给定类名的情况下检索控制器名称.就是,我有

Articles::Category
Run Code Online (Sandbox Code Playgroud)

我想要检索

articles/categories
Run Code Online (Sandbox Code Playgroud)

我想在与控制器无关的视图文件中检索控制器名称Articles::Categories.

我该怎么做(可能使用一些Ruby on Rails核心方法)?

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

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

以预定顺序加载CSS文件

我正在使用Ruby on Rails,我想确保我的CSS文件按预定顺序加载.应该在application.html.erb文件中声明要完成的代码.

有一些RoR方法可以做到这一点?

css ruby load ruby-on-rails ruby-on-rails-3

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

在Ruby on Rails应用程序中随处调用方法

我正在使用Ruby on Rails 3.0.9,我试图从内部帮助器,控制器,模型和视图文件中调用一些方法.我想要做的是创建一个库,在我的应用程序内部构建\ standardize命名约定,以便我可以使用\运行如下所示:

standardized_name = standardize_name(Article)
Run Code Online (Sandbox Code Playgroud)

你有什么建议?

PS:我听说过mixin,但我应该如何在我的情况下使用它们?此外,我不想在每个需要使用它的类中声明包含mixin(也就是说,我希望在我的所有应用程序类中都有一个包含mixin的"唯一"语句).

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

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

如何在运行"开发"和"生产"模式时"自动构建"并加载不同的CSS样式表文件?

我正在使用Ruby on Rails 3.0.10并且我想自动构建并加载不同的CSS样式表文件,具体取决于我是developmentproduction模式中还是在模式下运行我的应用程序.

我想出于性能原因自动"最小化"CSS文件并加载那些相关的"最小化"文件,因为我不想向"公众" 显示我的CSS文件中存在的评论内容(注意:用户)可以访问主题,例如,使用Mozilla Firefox浏览器的FireBug插件).我也想为javascript文件做这件事.

我怎样才能做到这一点?

PS:我打算切换到Ruby on Rails v3.1 ......

css ruby load ruby-on-rails ruby-on-rails-3

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

部署(生产模式)时资产管道出现问题

我刚从Ruby on Rails 3.0.10切换到3.1.0,我使用的是jQuery UI 1.8.14.我在远程计算机上css生产模式加载文件时遇到问题.

在我的app/views/layouts/application.html.erb档案中,我有:

<%= stylesheet_link_tag 'application', 'jquery-ui-1.8.14.custom', 'jquery-ui-1.8.14.custom_redefinition' %>
<%= javascript_include_tag 'application' %>
Run Code Online (Sandbox Code Playgroud)

注意:该jquery-ui-1.8.14.custom文件是使用Theme Roller生成的CSS文件,jquery-ui-1.8.14.custom_redefinition是我的"自定义重定义"文件,它覆盖了一些CSS类.这些文件(都带有扩展名.css)位于vendor/assets/stylesheets.

在我的本地机器上的开发模式似乎都工作,但当我使用Capistrano部署到远程机器时,它不再起作用.也就是说,jQuery UI相关文件未按预期加载:如果我尝试访问它们,则它们的内容为空\空(我可以在为我的应用程序网页生成的源HTML代码中看到).

我怎么解决这个问题?


此时在我的config/environments/production.rb文件中我有:

# Compress JavaScripts and CSS
config.assets.compress = true

# Don't fallback to assets pipeline if a precompiled asset is missed
#
# Note: Since, at this time, the asset Pipeline doesn't work for me I am 
# …
Run Code Online (Sandbox Code Playgroud)

ruby deployment ruby-on-rails ruby-on-rails-3 asset-pipeline

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

升级到Rails 3.2.2:如何解决与Delayed Job gem相关的'Syck :: DomainType'未定义方法'错误?

我从3.1.0运行Ruby on Rails 3.2.2.我有这个问题

undefined method send_register_email\' for #<Syck::DomainType:0x0000012d2346b8>\n/<ABSOLUTE_PATH>/.rvm/gems/ruby-1.9.2-p290/gems/delayed_job-3.0.1/lib/delayed/performable_mailer.rb:6:in perform ...
Run Code Online (Sandbox Code Playgroud)

有许多其他人试图解决的DelayedJob宝石:有人成功,其他人没有.如果我尝试了我在网上找到的所有解决方案,那么我属于后一类.

这时,在我的Gemfile中我有:

gem 'rails', '3.2.2'
gem "rake"
...
gem 'delayed_job_active_record'
...
Run Code Online (Sandbox Code Playgroud)

在升级Rails之前,在我的Gemfile中我有:

gem 'rails', '~> 3.1.0'
gem "rake"
...
# I also used the following statement by running Rails 3.2.2 but it didn't work.
gem 'delayed_job'
...
Run Code Online (Sandbox Code Playgroud)

为了发送电子邮件,我在控制器中使用以下代码链接:

::Users::Mailer.delay.send_register_email(@user)
Run Code Online (Sandbox Code Playgroud)

在我的APPLICATION_ROOT/app/mailers/users/mailer.rb档案中,我有:

class Users::Mailer < ActionMailer::Base
  ...

  def send_register_email(user)
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

在更新到Rails 3.2.2之前,所有工作都正常.现在我在介绍文本中得到了上面提到的错误.我该如何尝试解决延迟工作问题?


我注意到在与delayed_job_active_recordgem 相关的数据库表中应该是一个名为'queue'的列(有关更多信息,请参阅官方文档中的"Gory Details"部分).但是,因为我使用gem 'delayed_job'它存在于该数据库表中.可能是那个问题?


我注意到的另一件事是以下(但我认为这不是问题,现在):

$ rake …
Run Code Online (Sandbox Code Playgroud)

ruby activerecord ruby-on-rails delayed-job ruby-on-rails-3

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

如何通过仅针对一种情况禁用Ruby on Rails缓存系统来检索数据库数据?

我正在使用Ruby on Rails v3.2.2,我想通过仅在一个案例中禁用系统缓存来检索数据库数据.也就是说,在我的视图文件中,我有以下内容:

<h1>Random articles 1</h1>
<%= Article.order('RAND()').limit(3).inspect %>
...
<h1>Random articles 2</h1>
<%= Article.order('RAND()').limit(3).inspect %>
Run Code Online (Sandbox Code Playgroud)

当呈现视图文件时,它在"随机文章1"和"随机文章2"下输出相同的数据.之所以发生这种情况是因为Ruby on Rails缓存系统(通过"默认"/"约定")试图以性能为由尽可能少地访问数据库.

如何防止此行为(仅针对上述情况),以便在视图文件中为finder方法输出不同的数据?

ruby database caching ruby-on-rails ruby-on-rails-3

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

如何检查类或模块是否已命名空间?

我正在使用Ruby on Rails 3.2.2,我想知道是否可以检查类或模块是否是命名空间.也就是说,我想运行类似下面的内容

ANamespaceName::AnotherNamespaceName::AClassName.is_namespaced?
#=> true
ANamespaceName::AClassName.is_namespaced?
#=> true
AClassName.is_namespaced?
#=> false
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,问题与声明/实现该is_namespaced?方法有关.

ruby namespaces ruby-on-rails class ruby-on-rails-3

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

我怎么能/应该覆盖我的模型的`build`方法?

我正在使用Ruby on Rails 3.2.13,因为在我之前的问题"我应该如何使用alias_method_chain构建方法?" 似乎找到了任何解决方案,我正在考虑build在我的模型类中覆盖该方法以获得所需的行为.

我怎么能/应该覆盖build我的模型的build方法(即使方法运行为ActiveRecord关联类似@article.comments.build(...))?

ruby methods overriding ruby-on-rails class

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

你建议我用什么宝石来实现一个简单的"联系我们"表格?

我正在使用Ruby on Rails 3.0.9,我计划在我的应用程序中添加一个简单的"联系我们"表单,以便用户可以联系我们的团队.为此,我想运行验证和"朋友"功能和(以避免自己实现)和使用第三方软件,但...

...你建议使用什么宝石(或插件)?对于这种事情,最广泛"批准"的宝石是什么?

当然我想在"积极开发"中使用gem(也就是说,它的开发人员是活跃的).

ruby forms gem ruby-on-rails ruby-on-rails-3

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