小编jpw*_*ynn的帖子

rails 3.1.3:尝试在生产中本地运行,资产管道无法正常工作

我的应用程序在开发模式下运行正常

当我在生产模式下运行时RAILS_ENV=production rails s,我的.css或.js文件都没有被加载.(我使用了预编译资产RAILS_ENV=production bundle exec rake assets:precompile.)

webrick日志显示:

ActionController :: RoutingError(没有路由匹配[GET]"/assets/application-a73ce43be7bf75953cd0c60b2b4a7eb0.js"):

ActionController :: RoutingError(没有路由匹配[GET]"/assets/application-986dd79830088c416c1632c12999ec69.css"):

文件已编译(根据log\production.log文件),我的public/assets目录确实显示了带有和没有指纹的文件:

ls public/assets
application-986dd79830088c416c1632c12999ec69.css
application-986dd79830088c416c1632c12999ec69.css.gz
application-a73ce43be7bf75953cd0c60b2b4a7eb0.js
application-a73ce43be7bf75953cd0c60b2b4a7eb0.js.gz
application.css
application.css.gz
application.js
application.js.gz
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails asset-pipeline

29
推荐指数
1
解决办法
7352
查看次数

在Rails中,如何以可与ActiveSupport :: TimeZone [zone] .parse()一起使用的格式获取当前时区(Time.zone)?

一个方法如何获取当前的Time.zone并将其放入可用的格式ActiveSupport::TimeZone[some_zone].parse()

Time.zone.to_s返回一个不能用的字符串似乎很奇怪 ActiveSupport::TimeZone[zone].parse()

Time.zone.to_s 回报 "(GMT-08:00) Pacific Time (US & Canada)"

不过ActiveSupport::TimeZone["(GMT-08:00) Pacific Time (US & Canada)"]nil.

ActiveSupport::TimeZone["(GMT-08:00) Pacific Time (US & Canada)"]
=> nil

ActiveSupport::TimeZone["Pacific Time (US & Canada)"]
=> (GMT-08:00) Pacific Time (US & Canada)
Run Code Online (Sandbox Code Playgroud)

timezone ruby-on-rails

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

Rails 3.1:Ruby成语,以防止.each抛出异常,如果为nil?

有没有办法使用,.each所以如果对象为零或空(如果没有添加额外的空/空白测试,它不会抛出错误?

似乎如果我说phonelist.each do |phone|如果phonelist是空的,那么不应该执行该块.

但是在我看来(haml)我有- @myvar.phonelist.each do |phone|,如果phonelist是空的,它会抛出一个NoMethodError.

我遇到了很多,总是通过为.blank添加显式检查/分支来解决这个问题?但似乎应该有一种更简单的方法来告诉.每个空手段什么都不做.

ruby each ruby-on-rails

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

rails 3:如何在动作邮件中中止交付方式?

在我的邮件控制器中,在某些条件下(缺少数据),我们中止发送电子邮件.

在这种情况下如何在不渲染视图的情况下退出控制器方法?

如果@ some_email_data.nil返回?

没有做到这一点,因为视图仍然呈现(在我尝试使用@some_email_data的每个地方抛出一个错误,除非我添加了大量的nil检查)

即使我做了零检查,它也会抱怨没有"发送者"(因为我认为在进入我设置发送者和主题的行之前做了'返回'.

也没有 render ... return

基本上,RETURN不会在邮件方法内返回!

ruby-on-rails actionmailer

22
推荐指数
3
解决办法
5365
查看次数

在Rails + Postgres中按任意时间间隔计算记录的最佳方法

我的应用程序有一个Events带有时间戳事件的表.

我需要在每个最近的N时间间隔内报告事件的数量.对于不同的报告,间隔可以是"每周"或"每天"或"每小时"或"每15分钟间隔".

例如,用户可以显示他们每周,每天,每小时或每季度收到的订单数量.

1)我的偏好是动态地执行单个SQL查询(我正在使用Postgres)按任意时间间隔进行分组.有没有办法做到这一点?

2)一种简单但丑陋的暴力方法是对按时间戳排序的开始/结束时间帧内的所有记录执行单个查询,然后使用方法按任意间隔手动构建计数.

3)另一种方法是在事件表中为每个区间添加单独的字段并静态存储一个the_week the_day,the_hourthe_quarter_hour字段,这样我就可以在创建记录时(一次)进行"点击",而不是每次报告该字段时.

这里有什么最好的做法,因为我可以根据需要修改模型和预先存储间隔数据(尽管只需要将表格宽度加倍);

sql postgresql ruby-on-rails aggregate-functions generate-series

21
推荐指数
1
解决办法
5161
查看次数

rails 3 + devise:如何使电子邮件确认链接使用安全https(不是http)

如何告诉Devise使用https(不是http)进行所有帐户确认和密码提醒等链接?

[注意:我不是在寻找将所有 http 重定向到https 的解决方案,我只需要设计以确保它创建的链接使用https]

我们的rails 3应用程序使用设计,并且应用程序在https下运行正常,但是,设计始终使用http作为电子邮件确认和密码链接,它通过电子邮件发送给用户.

在我的环境文件中,我尝试更改:

config.action_mailer.default_url_options = { :host => "app1.mydomain.com" }  
Run Code Online (Sandbox Code Playgroud)

 { :host => "https://app1.mydomain.com" }
Run Code Online (Sandbox Code Playgroud)

但可预测的设计创建的链接看起来像 http://https//app1.mydomain.com ....(例如,它预先设置:主机设置与http :)

https ruby-on-rails devise

19
推荐指数
1
解决办法
4531
查看次数

测试变量是否与if-elsif链长的几个字符串中的任何一个匹配,或者case-when

我假设在红宝石中有一个很好的单行方式

if mystr == "abc" or "def " or "ghi" or "xyz"
Run Code Online (Sandbox Code Playgroud)

但在我通常咨询的在线参考文献中找不到如何做到这一点...

谢谢!

ruby string comparison

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

在Ruby/Rails中,如何编码/转义URL中的特殊字符?

在使用OpenURI之前,如何编码或"转义"URL open(url)

我们使用OpenURI打开远程URL并返回xml:

getresult = open(url).read
Run Code Online (Sandbox Code Playgroud)

问题是URL包含一些用户输入文本,其中包含空格和其他字符,包括"+","&","?"等可能,因此我们需要安全地转义URL.我在使用Net :: HTTP时看到了很多例子,但是没有为OpenURI找到任何例子.

我们还需要能够解析我们在会话变量中收到的类似字符串,因此我们需要倒数函数.

ruby open-uri urlencode

15
推荐指数
4
解决办法
5万
查看次数

rails 3 + devise:如何修改邮件方法以确认电子邮件添加用户的第二个电子邮件地址

背景:在我们的应用程序中,我们经常有销售代表使用销售人员的计算机为我们的客户进行设置(通常客户在我们设置它们时无法访问他们的电子邮件).因此,我们正在考虑在销售代表的电子邮件地址的设计注册表中添加一个字段,并将确认链接也转到该电子邮件地址.

问题:有没有办法告诉设计bcc(或cc)初始确认电子邮件(只有初始确认电子邮件)到新用户注册表上也提供的(可选)"backup_email"电子邮件地址?

或者,有没有办法'禁用'确认电子邮件过程,但只有当某个代码输入注册字段时?

我知道如何在设计注册表单中添加另一个字段,但是我没有看到如何/在哪里修改设计邮件代码,所以当确认电子邮件发送到"电子邮件"地址时它也会转到"backup_email"地址(如果有的话,有时它是空白的).


感谢Johnny Grass!

我做了,rails generate mailer CustomerUserMailer 并补充说

#config/initializers/devise.rb
config.mailer = "CustomUserMailer"
Run Code Online (Sandbox Code Playgroud)

我的自定义邮件看起来像:

# app/mailers/customer_user_mailer.rb
class CustomUserMailer < Devise::Mailer
  def headers_for(action)
    headers = {
      :subject       => translate(devise_mapping, action),
      :from          => mailer_sender(devise_mapping),
      :to            => resource.email,
      :cc            => resource.backup_user_email(action),
      :template_path => template_paths
    }
  end
end
Run Code Online (Sandbox Code Playgroud)

然后我将3个邮件模板FROM移动views/devise/mailerviews/customer_user_mailer(否则电子邮件是空的)

然后我在我的User模型中添加了一个方法,该方法backup_user_email()根据用户记录和操作中的数据返回"备份"电子邮件地址(如果有).唯一的"猫腻"存在就是测试时action它不是action == "confirmation_instructions"action == :confirmation_instructions.

ruby-on-rails registration devise

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

rails 3,在link_to中如何指定目标和可选的url参数?

我得到了额外的url params与我的link_to工作正常,但无法弄清楚如何使链接打开到一个新的窗口或选项卡

我在几个地方尝试过:target =>"_ blank",但它总是会抛出语法错误

这是我在指定目标之前所拥有的:

= link_to "click here", :controller=>"widget", :action=>"mypage", :extraparam => "foobar"
Run Code Online (Sandbox Code Playgroud)

url ruby-on-rails

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