我对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应该怎么样?
答案 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参数的哈希。