我正在尝试使用link_to创建一个链接到新的/创建页面,如下所示:"new/2011/5".但是,当我使用下面的代码时,它会创建一个看起来像"new.2011?= 5"的链接.
<%= link_to 'New', new_money_path(params[:year], params[:month]) %>
Run Code Online (Sandbox Code Playgroud)
我猜这与默认的新动作ror创建的事实没有任何额外的参数有关.有没有解决的办法?
我的路线页面包括以下行:
match "money/new/:year/:month" => "money#new"
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助.
您需要为该助手命名您的路线以引用它.
match 'money/new/:year/:month' => 'money#new', :as => 'new_money'
Run Code Online (Sandbox Code Playgroud)
然后你link_to应该工作.但请注意:您的链接文字显示为"编辑",但您正在创建新资源.这可能不是一个很好的UI决定.此外,您可能希望将路由限制为GET请求get 'path/:to/:whatever'而不是match.
此外,您似乎已经resources在路线的某个地方打电话了.由于在这种情况下您可能不希望两条路由指向具有不同参数的相同操作,因此您应该跳过该new方法,以使路由如下所示:
resources :monies, :except => [:new]
get 'money/new/:year/:month' => 'money#new', :as => 'new_money'
Run Code Online (Sandbox Code Playgroud)