我正在尝试使用link_to创建一个链接到新/创建页面,如下所示:“new / 2011/5”。但是,当我使用下面的代码时,它会创建一个看起来像“new.2011?= 5”的链接。
<%= link_to 'New', new_money_path(params[:year], params[:month]) %>
我猜这与默认的新动作ror创建的事实没有任何额外的参数有关。有没有解决的办法?
我的路线页面包含以下行:
match "money/new/:year/:month" => "money#new"
提前感谢您的帮助。
答案 0 :(得分:5)
您需要为该助手指定路线以引用它。
match 'money/new/:year/:month' => 'money#new', :as => 'new_money'
然后你的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'
答案 1 :(得分:0)
您应该使用带POST的按钮,而不是链接/ GET来创建新项目。