2012-01-30 136 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