?在routes.rb中使用map.with_options ruby

时间:2010-01-21 06:42:56

标签: ruby-on-rails routes

我在ruby代码中使用了命名路由。我来自phpworld,您将使用$_GET$_POST传递信息。我想知道是否有办法将其放入routes.rb中,如下所示:

map.with_options :controller => 'test' do |m|
  m.someurl 'someurl?search=someterm', :action => 'index'
end

目前正在返回can't convert Hash into String。谢谢!

贾斯汀

1 个答案:

答案 0 :(得分:3)

如果您只想使用查询字符串,则根本不需要告诉您的路由。 params 对象将包含任何传递的参数。

map.with_options :controller => 'test' do |m|
  m.some_url 'someurl', :action => 'index'
end

然后当你使用辅助方法时:

some_url_path(:search =>“someterm”)

将为您创建查询字符串值。

但是,如果要将参数传递给控制器​​,可以在路径中绑定它们:

map.connect ':controller/:action/:id/:search' 

然后,您可以在控制器中访问:

params[:search]

在你的情况下,这就像是:

map.with_options :controller => 'test' do |m|
  m.some_url 'someurl' :action => 'index'
end

Rails Routing Guide提供了有关该主题的精彩概述。