Вопрос об определении маршрута - PullRequest
0 голосов
/ 31 января 2011

Я определил ресурсы в Routes%td =link_to(t("delete"), car_post_path(car)) Я получил NoMethodError: неопределенный метод `car_post_path '

Почему?(Я использую Rails 3)

Ответы [ 4 ]

1 голос
/ 31 января 2011

Вы имеете в виду, что хотите удалить объект автомобиля, а не объект сообщения, принадлежащий автомобилю, верно?

Если это правда, вы должны использовать car_path(car) вместо car_post_path(car)

Есть два способа сделать это:

# 1
%td= link_to t("delete"), car_path(car), :confirm => "Are you sure?", :method => :delete

# 2
%td= link_to t("delete"), car, :confirm => "Are you sure?", :method => :delete

Поскольку это ресурс RESTful, в # 2 передачи объекта car с :method => :delete будет достаточно, чтобы указать рельсам использовать car_path(car). Так что эти два имеют одинаковый эффект.

0 голосов
/ 31 января 2011

Я вижу другой хороший ответ на этот вопрос.Я просто хочу добавить, что если вы хотите перечислить маршруты, определенные в вашем приложении, вы должны запустить:

...$ rake routes 

из командной строки и получить что-то вроде

        speakers GET    /speakers(.:format)                               {:action=>"index", :controller=>"speakers"}
                 POST   /speakers(.:format)                               {:action=>"create", :controller=>"speakers"}
     new_speaker GET    /speakers/new(.:format)                           {:action=>"new", :controller=>"speakers"}
    edit_speaker GET    /speakers/:id/edit(.:format)                      {:action=>"edit", :controller=>"speakers"}
         speaker GET    /speakers/:id(.:format)                           {:action=>"show", :controller=>"speakers"}
                 PUT    /speakers/:id(.:format)                           {:action=>"update", :controller=>"speakers"}
                 DELETE /speakers/:id(.:format)                           {:action=>"destroy", :controller=>"speakers"}

, так что если выдобавив суффикс _path или _url (например) edit_speaker, вы получите edit_speaker_path или edit_speaker_url, которые являются именами вызываемых методов ваших маршрутов.

0 голосов
/ 31 января 2011

Измените код на следующий

% тд
= Link_to (т ( "Удалить"), car_path (автомобиль))

, поскольку вы не связываете какое-либо отношение с ruote, как для вашего кода. так что посоветуйтесь с этим ..

0 голосов
/ 31 января 2011
<%= link_to 'DELETE', car, :confirm => 'Are you sure?', :method => :delete %>

Пожалуйста, пройдите это руководство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...