Ruby on rails 您是否必须定义控制器帮助器来获取rails中新路由的路径?

Ruby on rails 您是否必须定义控制器帮助器来获取rails中新路由的路径?,ruby-on-rails,ruby,routes,Ruby On Rails,Ruby,Routes,我有一个客户模型,我想让他的控制器回复到find方法 我在routes.rb文件中添加了以下内容: 匹配“customers/find/:name”=>“mymodel#find”资源:customers 在我的控制器中,我有如下内容: def find @customers = Customer.fin_all_by_name(params[:name]) end 在我的视图中,当我需要为该资源创建链接时,我使用以下方法: = link_to 'Find By Name', :contr

我有一个客户模型,我想让他的控制器回复到find方法

我在routes.rb文件中添加了以下内容:

匹配“customers/find/:name”=>“mymodel#find”资源:customers

在我的控制器中,我有如下内容:

def find
  @customers = Customer.fin_all_by_name(params[:name])
end
在我的视图中,当我需要为该资源创建链接时,我使用以下方法:

= link_to 'Find By Name', :controller => "customers", :action => "find", :name => @customer.name
现在,我正在尝试cucumber的集成测试,我遇到了一个问题:我必须在customer_step.rb文件中为同名客户创建一个步骤定义:

当/^名为“(.*)”的客户/ url_编码('/customers/find/'+$1)

现在这行行不通了,它说的是未定义的方法“url\u encode” 我需要对该字符串进行编码,因为如果名称包含空格,则会出现明显错误

我是ruby和rails的新手,我想我遗漏了一些东西

我是否遵循正确的模式来完成此搜索? 我应该在控制器中定义一个助手方法来生成搜索URL吗? 我的_step.rb文件中的那一行正确吗

我不希望URL是这样的:customers/find?name=test
但是:客户/查找/测试

我只是整理了一下,稍微修改了匹配表达式,并添加了:as参数 这使我有可能调用find_path()helper方法

匹配“customers/find/:name”=>“customers#find”,:as=>:find


这是否正确?

使用
:as
确实应该为您创建一个路由帮助器。如果您想获得匹配路由的列表、它们路由到哪个控制器/操作以及路由助手的名称,请在控制台中使用
rake routes

使用
:as
确实应该为您创建一个路由助手。如果要获取匹配路由的列表、路由到的控制器/操作以及路由帮助器的名称,请在console中使用
rake routes