小编jet*_*roo的帖子

Controller Inheritance如何实现抽象控制器

鉴于我有一个类A,它是一种抽象的,并封装了后代B和C所需的逻辑.

class A
end

class B < A
end

class C < A
end
Run Code Online (Sandbox Code Playgroud)

此外,如果具有为B和C提供路由的资源路由,并且因此由相应的控制器处理.

为了解决问题,我将两个控制器的共享代码移动到一个"抽象"控制器(永远不会被实例化,也没有路由到它的动作):

class AController < ApplicationController 
  def new(additional_opts)
    render locals: {base: "stuff"}.merge(additional_opts)
  end 
end

class BController < AController
  def new
    super(foo: 1)
  end
end

class CController < AController
  def new
    super(bar: 1)
  end      
end
Run Code Online (Sandbox Code Playgroud)

控制器动作通常没有参数.但是,由于AController是抽象的,这种方法可能是有效的,或者更好地依赖实例变量并简单地调用super然后从变量中提取所需的信息呢?

欢迎任何见解.

编辑1:

值得庆幸的是,Lateralu42建议让我思考的问题; 好吧,我真正的问题是什么,我想要一个anwser?(就像搭便车的徒步旅行者指南).那么它还要使用哪种代码重用方法呢?

在这里找到一篇不错的博文.

ruby ruby-on-rails

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

ruby gem用于解析序列化的PHP数组?

我正在使用带有savon v2的SOAP Web服务,并且在响应中获取了一个需要解析的序列化PHP数组.

是否有红宝石或铁轨宝石提供此功能?

php数组字符串如下所示:

"a:5:{s:4:\"link\";s:88:\"https://www.12345.de/kundenmeinung.php?kunde=a2ca9498f6f7695aa518d6d6ed9fec7b&shop=12345\";s:4:\"hash\";s:32:\"a2ca9498f6f7695aa518d6d6ed9fec7b\";s:11:\"known_since\";s:0:\"\";s:4:\"done\";i:1;s:7:\"done_at\";i:1358413353;}"
Run Code Online (Sandbox Code Playgroud)

问候

卡斯滕

ruby ruby-on-rails

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

Ruby Ranges的第一个也是最后一个问题

我在玩范围时偶然发现了奇怪的行为,预计:

(1...1).count
# => 0 
(1...1).first(1)
# => [] 
(1...1).last(1)
# => []
(1...1).to_a
# => [] 
Run Code Online (Sandbox Code Playgroud)

(1...1).first
# => 1
(1...1).last
# => 1
Run Code Online (Sandbox Code Playgroud)

我是否会遗漏某些内容或是否是这种行为?

ruby

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

为什么没有赋值的三元运算符会返回预期的输出?

我想知道为什么与三元运算符的赋值反应奇怪:

a = "foo"­
=> "foo"
a = nil ? nil : a
=> "foo"
a
=> "foo"
Run Code Online (Sandbox Code Playgroud)

但:

a = nil ? nil : a
=> "foo"
a = "bar"­ ? "bar"­ : a
=> "bar"
a
=> "bar"
Run Code Online (Sandbox Code Playgroud)

和:

if a = nil
  puts "should be nil"
end
=> nil
Run Code Online (Sandbox Code Playgroud)

不会puts是字符串,因为虽然作业成功,但a = nil会返回nil错误.

这一切都表现得像预期的那样吗?

ruby if-statement variable-assignment conditional-operator

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