2012-01-30 120 views
0

我想创建一个非常简单的网站,从URL(或链接)发送和接收参数,应用程序应支持任意数量的参数,即http://localhost:3000/action=receive&controller=pages&email=mail%40site.com&name=Vinny,然后能够接收/打印它们。路由错误Rails 3.2.1

我想我已经找到了我的路线问题。目前,它看起来像这样:

match 'pages/*params' => 'pages#receive' 

我创建一个发送这样的PARAMS链接:

<%= link_to "Send Params", :action => "receive", :name => "Vinny", :email => "[email protected]" %> 

当我点击我得到以下错误的链接。

No route matches [GET] "/assets" 

和URL看起来像这样:

http://localhost:3000/assets?action=receive&controller=pages&email=mail%40site.com&name=Vinny

资产?

如果我的路由,而不是看起来像这样:

match 'pages/:name/:email' => 'pages#receive' 

它的工作原理,但后来我仅限于指定PARAMS。

关于如何解决这个问题的任何提示都会很棒。

+0

因此,即使你是''页面'控制器(使用参数)硬编码的路线工程访问“资产”控制器?如果你专门引用了资产:match'assets/* params'... – BryanH 2012-01-30 13:27:19

+0

@BryanH嗨,不,我没有指定或创建一个名为Assets的控制器,我只有一个控制器Pages。不知道为什么Rails添加资产?到我的网址后。但是,我试图从URL中删除“资产?”,我又遇到了另一个路由问题。我很生锈的Rails,这可能不是正确的方式发送任意参数到我的控制器? – Anders 2012-01-30 13:35:23

+0

@BryanH好主意,但它没有帮助。 ( – Anders 2012-01-30 13:47:50

回答

2

好吧,我想我明白发生了什么。在路由中指定参数对于将值传入控制器的操作中并不是必需的。因此,更换map

resources :pages 

如果您添加到您的链接

:controller => "pages" 

应该去正确的控制器+行动早在routes.rb规定。 (这可能不是你的情况需要)

在这种行动,你可以抓住所有的则params的从散

email = params[:email] 
account = params[:name] 

等等

+0

)谢谢!您的建议可行,但并不完全是我正在寻找的结果。我原来的问题可能不够清楚。我想要的是可以发送任意参数,您的解决方案只允许指定(!?!)参数,例如:电子邮件。用户应该能够例如在url中添加address = NY并且页面应该打印它。不知道是否可以使用link_to。可能不得不使用一些简单的CGI东西(link_to会更好)。 – Anders 2012-01-30 14:02:29

+0

感谢您的链接,将检查出来。 – Anders 2012-01-30 14:05:07

+0

啊,我没有输入所有的参数,因为我很懒(因此“等”)。你可以通过'variable = params [:parameter_name]'得到* any *参数的值,其中'parameter_name'是参数的名字。 :) – BryanH 2012-01-30 14:14:28