link_to不使用额外的参数

时间:2011-02-20 16:01:13

标签: ruby-on-rails

我正在尝试使用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"

提前感谢您的帮助。

2 个答案:

答案 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来创建新项目。