小编SRa*_*ack的帖子

尝试方法更好的替代方案

我想要一个干净的代码,我觉得这很笨重.

有一个更好的方法吗?

User.try(:profile).try(:settings).try(:card).try(:options)
Run Code Online (Sandbox Code Playgroud)

如果我删除了try方法,我会得到一个nil方法错误.

是否还有另一段代码可以执行以下操作:

User.try(:profile,:settings, :card, :options)
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails activesupport

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

Rails动态错误页面(404,422,500)显示为空白

我正在将动态错误页面实现到应用程序中,并且感觉它正在查找public(现在不存在的)模板的文件夹,而不是遵循我设置的路由.

config/application.rb我添加了这一行config.exceptions_app = self.routes的帐户.

然后我将以下内容添加到我的路线中:

get "/not-found", :to => "errors#not_found"
get "/unacceptable", :to => "errors#unacceptable"
get "/internal-error", :to => "errors#internal_error"
Run Code Online (Sandbox Code Playgroud)

而错误控制器看起来像这样:

class ErrorsController < ApplicationController
  layout 'errors'
  def not_found
    render :status => 404
  end

  def unacceptable
    render :status => 422
  end

  def internal_error
    render :status => 500
  end
end
Run Code Online (Sandbox Code Playgroud)

/not-found尽管访问任何不存在的URL(即/ i-dont-exist),但是要显示模板应该是一个空页面.

我可以看到的唯一原因是异常处理需要路由,例如get "/404", :to => "errors#not_found",具有讽刺意味的是,它没有找到/ 404的路由(并且没有,这不仅仅是它工作:)).

任何建议,非常感谢.谢谢,史蒂夫.

ruby configuration routing ruby-on-rails ruby-on-rails-4

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

如何在Rails中的多个对象之间求和两个值的乘积?

想象一下,我有一个p有2股票的投资组合port_stocks.我想要做的是对每个进行计算port_stock,然后总结所有结果.

[60] pry(main)> p.port_stocks
=> [#<PortStock:0x00007fd520e064e0
  id: 17,
  portfolio_id: 1,
  stock_id: 385,
  volume: 2000,
  purchase_price: 5.9,
  total_spend: 11800.0>,
 #<PortStock:0x00007fd52045be68
  id: 18,
  portfolio_id: 1,
  stock_id: 348,
  volume: 1000,
  purchase_price: 9.0,
  total_spend: 9000.0>]
[61] pry(main)> 
Run Code Online (Sandbox Code Playgroud)

所以,从本质上讲,使用上面的代码我想这样做:

ps = p.port_stocks.first #(`id=17`)
first = ps.volume * ps.purchase_price # 2000 * 5.9 = 11,800

ps = p.port_stocks.second #(`id=18`)
second = ps.volume * ps.purchase_price # 1000 * 9.0 = 9,000

first + second = 19,800
Run Code Online (Sandbox Code Playgroud)

我想简单地说19,800.理想情况下,我想以非常Ruby的方式做到这一点.

如果我只是简单地总结1中的所有值total_spend …

ruby ruby-on-rails ruby-on-rails-5

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

如何对数组中的数字求和

我试图用函数对数组中的数字求和:

def total(numbers)
 numbers.each do |e|
  total_number = e + total_number
  return total_number
 end
end

puts total([1,2,3,4])
Run Code Online (Sandbox Code Playgroud)

但我不断收到一条错误消息:

nil无法强制进入Fixnum(repl):18:在'+'

谁能看到我做错了什么?

each> do循环在函数之外工作.

ruby

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