1

尝试使用资源路由辅助函数时出现错误

    <%= link_to_remote "Delete", {
        :method => :delete, 
        :url=> phone_numbers_url(phone_number_display.id), 
        :update => "section_phone"
        }%>

在我的路线中,我有

       map.resources :phone_numbers

我收到以下错误

 You have a nil object when you didn't expect it!
 The error occurred while evaluating nil.to_sym

当我使用

:url=> phone_numbers_url(:id => phone_number_display.id)

我不再收到错误,但我得到了不安的网址

 http://localhost:3000/phone_numbers?id=1

我不明白这个错误,因为 phone_number_display.id 不为空

4

4 回答 4

2

您想要路线的单数版本:

phone_number_url(phone_number_display)
于 2009-03-28T17:04:33.693 回答
1

不需要将尾随参数括在 {} 中,因为无论如何它们都会被转换为 Hash。请参阅link_to_remote 的 api。我不知道这是否是导致问题的原因,但这是我要尝试的第一件事。

    <%= link_to_remote "Delete",
            :method => :delete, 
            :url=> phone_numbers_url(phone_number_display.id), 
            :update => "section_phone"
            %>

在那之后,如果它仍然无法正常工作,我会查看该phone_numbers_url(phone_number_display.id)部件,以检查我是否得到了我所期望的。

于 2009-03-28T08:25:41.383 回答
1

phone_numbers_使用路径也可能更可取,(phone_number_display.id)因为这将为您提供相对路径“ /phone_numbers?id=1”而不是完整http://localhost.../..路径。

于 2009-05-08T16:46:35.883 回答
0

如果您刚刚创建了这条路线,您可能需要重新启动您的 mongrel。

您也可能需要运行 rake 路线来仔细检查命名路线。

于 2009-03-28T08:24:52.023 回答