Ruby on rails 到主应用程序和引擎的共享部分删除链接路由
我最近开始使用引擎分解我的一些应用程序 我在使用的共享部分中遇到了一些路由问题。部分内容如下所示:Ruby on rails 到主应用程序和引擎的共享部分删除链接路由,ruby-on-rails,rails-routing,rails-engines,Ruby On Rails,Rails Routing,Rails Engines,我最近开始使用引擎分解我的一些应用程序 我在使用的共享部分中遇到了一些路由问题。部分内容如下所示: shared/delete_link.html.erb <%= link_to object, method: :delete, data: { confirm: 'Are you sure?' } do%> <span class="glyphicon glyphicon-remove"><
shared/delete_link.html.erb
<%= link_to object,
method: :delete,
data: { confirm: 'Are you sure?' } do%>
<span class="glyphicon glyphicon-remove"></span>
<% end %>
其中,部分由主应用程序中的控制器渲染,并带有引擎中路由的删除链接。唯一重要的是(我认为)控制器在主应用程序中,对象的路由在挂载的引擎中,因此需要命名
如何在不向视图中添加大量逻辑的情况下恢复功能?重构时不要过度 使用分部创建单个元素很难达到最佳效果。相反,您可以只创建一个助手方法:
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
通过使用方法,您可以轻松创建一个包装器,在填充默认参数时代理另一个方法。相比之下,部分代码适合于大块html,但在变量传递和组合方面仍然很混乱
要在rails中创建指向命名空间路径的链接,请传递一个数组:
# /foos/bars/:id
<%= link_to_destoy([:foo, bar]) %>
# /foos/:foo_id/bars/:id
<%= link_to_destoy([foo, bar]) %>
#/foos/bar/:id
#/foos/:foo_id/bar/:id
谢谢您的帮助。我知道最终我会成为一名助手,但我不知道你可以将数组传递给link_。看起来它正在正确构建路径,但我仍然得到一个错误未定义的方法'foo\u bar\u path',用于#
为什么它无法识别在我搜索路径时显示的路径?如何对此助手进行助手测试?
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
# /foos/bars/:id
<%= link_to_destoy([:foo, bar]) %>
# /foos/:foo_id/bars/:id
<%= link_to_destoy([foo, bar]) %>