gpt4 book ai didi

ruby-on-rails - 帮助程序中的 Rails 部分本地人

转载 作者:数据小太阳 更新时间:2023-10-29 08:08:26 24 4
gpt4 key购买 nike

RoR 中是否有一种方法可以访问 helper.helper 中的当前部分局部变量?我想要类似的东西

<% render partial: 'foo', locals: { :foo: 'bar' } %>

然后可以在 ApplicationHelper 中访问:

def my_helper_method
...
my_var = ...local_assigns[:foo] # should assign 'bar'
...
end

描述问题的其他方式是:如何将所有传递给局部变量的局部变量隐式传递给我的辅助方法?如果我明确地这样做,会有很多样板代码,它们只是将部分参数传递给辅助方法,而我有很多样板代码。

这可能吗?

最佳答案

Helpers 不知道 partials 中的局部变量。除非你明确地向他们传递一个参数,否则你不能做你所提议的。您可以做的是采用面向对象的方法,使用 presenters ,并避免一起使用助手。

要么自己制作,如 Railscasts 剧集中所述,要么使用像 Draper 这样的 gem .就个人而言,我赞成“自己动手”的方法,因为它非常简单。

一些伪代码来理解这个想法:

class FooPresenter
def initialize(object, template)
@object, @template = object, template
end

def amazing_foo
@template.content_tag :div, class: 'foo' do
"#{@object.name}: Wow! this is incredible!"
end
end
end

module FooHelper
def present_foo(object)
presenter = FooPresenter.new(object, self)
yield presenter if block_given?
presenter
end
end

只需从您的 View 中实例化即可。

= present_foo(foo) do
= amazing_foo

是的,不需要传递参数。

Helpers 只是在命名空间中 float 的模块,坦率地说,很多时候它们鼓励不良的编码实践。 Presenter 提供了一种清晰的 OOP 方式来处理复杂的 View 逻辑。试一试。

关于ruby-on-rails - 帮助程序中的 Rails 部分本地人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27441409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com