我正在使用Rails 2.2.2与旧学校路线(即我不是RESTful),我注意到来自Rails link_to方法的奇怪行为。这是我的电话:
link_to("my description", { :controller => controller, :action => action }, :id => "html_id")
我希望该方法生成“/ controller / action”,但我得到的是“/ controller / action / id”。这仅在处理对“/ controller / action / id”URL的请求时调用link_to时发生,并且控制器和操作与我传递给link_to的控制器和操作相同。例如:
在我看来,似乎有些事情变得困惑。请求中有一个id触发link_to调用,但我不希望它被引用,我明确地不传递id参数。为了记录,这是我的旧学校默认路线:
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
知道为什么会发生这种情况,更重要的是,如何阻止它?非常感谢。
答案 0 :(得分:1)
link_to调用url_for帮助器调用ActionController :: url_for 如果ActionController :: url_for被赋予:action,则它假定当前页面的:id。
我不太确定如何修复它。
明确指定一个nil id,可能会工作或导致它与nil对象错误中断。
link_to "My description", {:controller => controller, :action => action, :id => nil}, :id => "html_id"
您也可以通过命名路由到达控制器/操作对。