【发布时间】:2014-01-28 09:43:52
【问题描述】:
编辑:
我收到了很多关于解决问题的不同方法的回复,非常感谢!
遗憾的是,直到现在它们都没有工作。
为了便于理解和重现故障,我在 GitHub 上使用 Rspec 套件创建了一个小型 Rails 存储库。
其中一个规范正在通过(演示者在视图中被初始化)。 其中一个规范失败(演示者在控制器中初始化)。
如何让他们都通过?
下面的原始问题:
这是我的演示者:
class UserPresenter
def initialize(user, vc)
@user = user
@vc = vc
end
def linkify()
#
# HERE IS THE PROBLEM
#
vc.link_to("foo") do
yield
end
end
end
这是我的控制器:
我在控制器中初始化我的 Presenter,将控制器的视图上下文与呈现的模型一起传递。
class UserController
def show
@user = User.find(#.....
@presenter = UserPresenter.new(@user, view_context)
end
end
在我的 Slim 模板中,我调用我的 Presenter 将内容放入链接中:
=@presenter.linkify do
p "123"
我的问题是,我无法将视图中的块传递给我的 linkify 方法。
在上面标有注释的代码中,传递的块是整个视图内容,而不是p 123。
当我通过 @presenter = UserPresenter.new(@user, self) 在视图中初始化我的 Presenter 时,它按预期工作。
如何使 linkify 方法使用提供的块,而不在视图中初始化演示者?
【问题讨论】:
-
可能是缩进级别问题
-
不是真的,我得到了
123
但没有按预期包含在链接中 -
是的,我试着摆弄这个,但看不到明显的问题:-/
标签: ruby-on-rails ruby slim-lang