您是否必须定义控制器辅助程序来获取轨道中新路线的路径



我有一个客户模型,我希望他的控制器响应查找方法

我在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_encode('/customs/find/'+$1)

现在这行不起作用了,它说未定义的方法"url_encode"我需要对这个字符串进行编码,因为如果名称包含空格,我会得到明显的错误。

我刚接触过红宝石和铁轨,我想我在这里错过了一些东西。

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

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

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

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

这是正确的吗?

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

最新更新