Javascript 如何/在何处使用jquery/erb代码创建共享方法?
在我的rails 3.1应用程序中,我添加了update.js.erb、create.js.erb和destroy.js.erb模板来处理javascript请求,一切都很好。它们都有相似的代码块,需要调用这些代码块来更新DOM的各个部分Javascript 如何/在何处使用jquery/erb代码创建共享方法?,javascript,jquery,ruby-on-rails,coding-style,erb,Javascript,Jquery,Ruby On Rails,Coding Style,Erb,在我的rails 3.1应用程序中,我添加了update.js.erb、create.js.erb和destroy.js.erb模板来处理javascript请求,一切都很好。它们都有相似的代码块,需要调用这些代码块来更新DOM的各个部分 ... // recalculate envelope total $('#<%= "#{dom_id @transaction.envelope} .available" %>').html('<%= "#{formatted_money
...
// recalculate envelope total
$('#<%= "#{dom_id @transaction.envelope} .available" %>').html('<%= "#{formatted_money @transaction.envelope.amount_available}" %>');
。。。
//重新计算信封总数
$('#').html('');
我想封装这个逻辑,Rails是如何让它更“干燥”的
我想象的是这样的:
<%= recalculate_envelope(@transaction.envelope) %>
但我不知道这个方法应该放在哪里,这样它就可以共享给每个模板,也可以共享给不同控制器的其他模板。就这一点而言,它甚至应该返回什么
谢谢。您应该将该方法放入helper类中。如果希望该方法可用于所有VEW(无论哪个控制器),则必须将其放入类
ApplicationHelper
。用于特定帮助器类中特定控制器的视图(例如,ProfileHelper
,使方法对ProfileController
的所有视图都可见)
因此,在助手类中,您可以实现您的方法,例如:
class ApplicationHelper
def recalculate_envelope(dom_id, envelope)
"$('##{dom_id envelope} .available').html('#{formatted_money envelope.amount_available}');"
end
end
然后,您可以使用访问视图中的方法
<%= recalculate_envelope(@transaction.envelope) %>
谢谢!我没有意识到它是如此简单,但我想这就是HTML模板助手的工作原理,那么为什么js也不这样呢?