Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 到主应用程序和引擎的共享部分删除链接路由_Ruby On Rails_Rails Routing_Rails Engines - Fatal编程技术网

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]) %>