代码之家  ›  专栏  ›  技术社区  ›  Chris

当我不传递模型ID时,为什么要将ID添加到其输出中?

  •  0
  • Chris  · 技术社区  · 15 年前

    我在使用Rails 2.2.2和旧的学校路线(即我没有休息),我注意到Rails链接到方法的奇怪行为。这是我的电话:

    link_to("my description", { :controller => controller, :action => action }, :id => "html_id")
    

    我想要生成“/controller/action”的方法,但是我得到的是“/controller/action/id”。只有在处理“/controller/action/id”URL请求时调用了link_to,并且控制器和操作与我传递给link_的相同时,才会发生这种情况。例子:

    1. 我在“/controller/action”页上,该页上指向“/controller/action”的链接正确指向“/controller/action”
    2. 我单击一个指向“/controller/action/id”的链接,新页面上的链接应该指向“/controller/action”现在指向“/controller/action/id”,其中id与上一个请求中的id相同。

    在我看来好像有什么事情变得困惑了。请求中有一个ID,它会触发链接调用,但我不希望引用它,而且我明确不传递ID参数。下面是我以前的学校默认路线:

    map.connect ':controller/:action/:id'
    map.connect ':controller/:action/:id.:format'
    

    知道为什么会发生这种情况吗?更重要的是,知道如何阻止它吗?多谢。

    1 回复  |  直到 15 年前
        1
  •  1
  •   EmFi    15 年前

    链接\调用helper的url_,helper为其调用actionController::url_ 如果为actionController::url_指定了:action,则它假定为当前页的:id。

    我不太清楚怎么修。

    显式指定nil id,可能会起作用,也可能导致它因nil对象错误而中断。

    link_to "My description", {:controller => controller, :action => action, :id => nil}, :id => "html_id"
    

    您还可以通过一个命名的路由到达您的控制器/操作对。