我最近开始使用引擎分解我的一些应用程序 我遇到了一些与我正在使用的共享部分中的某些链接路由的问题。部分看起来像这样:
shared/delete_link.html.erb
<%= link_to object,
method: :delete,
data: { confirm: 'Are you sure?' } do%>
<span class="glyphicon glyphicon-remove"></span>
<% end %>
我这样叫部分;传递给我想要删除的对象:
<%= render "shared/delete_link", :object => search %>
这适用于仍然在主应用程序中的模型/路线,但现在我有这样的情况:
|-controller(main-app)
|--show(main-app)
|---partial(engine)
|----partial-delete-link(main-app)
|-----link-route(engine)
部分由主app中的控制器呈现,其中包含引擎中路由的删除链接。唯一重要的事情(我认为)是控制器位于主应用程序中,对象的路径位于已安装的引擎中,因此需要命名空间。
如何在不将大量逻辑放入视图的情况下恢复功能?
答案 0 :(得分:0)
重构时不要过度。
使用partial来创建单个元素几乎不是最佳选择。相反,你可以创建一个辅助方法:
function destroyer(arr) {
// Remove all the values
for(var i=0;i<arguments.length;i++) {
arr = arr.filter( x => x !== arguments[i]);
}
console.log(arr);
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3); // it should return
通过使用方法,您可以轻松创建一个包含代理另一个方法的包装器,同时填充默认的args。比较部分对于大块的html是好的,但在变量传递和组合方面仍然很混乱。
要在rails中创建指向命名空间路径的链接,请传递数组:
module LinksHelper
def link_to_destoy(object, **kwargs)
opts = {
method: :delete,
data: { confirm: 'Are you sure?' }
}.deep_merge(kwargs)
link_to object, opts do
content_tag :span, class: 'glyphicon glyphicon-remove'
end
end
end