我的路线有什么问题,用rails发送任意参数

时间:2012-02-01 12:37:39

标签: ruby-on-rails ruby routes

我对Rails有点生疏。我正在尝试创建一个应该从link_to接受任意数量参数的路由,但我不断收到路由错误。

我的链接目前看起来像这样:

<%= link_to "Send Params", :action => "recieve", :controller => "pages", :name => "Test", :email => "test2" %>

我的路线看起来像这样:

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

我得到了:

No route matches {:action=>"recieve", :controller=>"pages", :name=>"Test", :email=>"test2"}

如果我这样做:

<%= link_to "Send Params", :name => "Test", :email => "test2" %>

并且:

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

它有点工作,但控制器中的方法没有被调用。

那么,路由和link_to应该怎么样?

1 个答案:

答案 0 :(得分:2)

如果我错了,请纠正我,但我认为你的*params路线中没有必要。你可以这样做:

# routes.rb
get 'pages/receive', :to => 'pages#receive'

# in view
<%= link_to "Send Params", :action => "receive", :controller => "pages", 
                           :name => "Test", :email => "test2" %>

# it generates link with path like /pages/receive?name=Test&email=test2

# in PagesController#receive
name = params[:name]   # => "Test"
email = params[:email] # => "test2"

在Rails中params是一个辅助方法(可以在控制器和视图中使用),它返回包含所有GET和POST参数的哈希。