как правильно 'rails' способ добавить ссылку на новый пользовательский метод - PullRequest
0 голосов
/ 19 февраля 2011

Мы добавляем новый метод 'delete_stuff' в WidgetsController приложения с поддержкой скаффолдинга.

в добавленных нами маршрутах соответствуют 'widget / delete_stuff /: id' => 'widgets # delete_stuff'

Я могу вручную создавать ссылки html (GET), такие как

<a href="/widget/delete_stuff/<% widget.id %>">My Custom Delete Stuff</a>

Но это плохо на многих уровнях (использует GET вместо DELETE, не разрешает диалоговое окно ПОДТВЕРДИТЬ, не СУШИТ и т. Д.)

Проблема в том, что я не могу понять, как использовать помощники URL для пользовательского метода ... пытаясь сделать что-то вроде этого:

<% link_to 'DeleteStuff', @widget, :confirm => 'Are you sure?', :method => :delete %>

Но это просто игнорируется, когда HTML

Я явно упускаю что-то фундаментальное о том, как использовать link_to, любая помощь будет оценена!

Приветствия, JP

Ответы [ 3 ]

2 голосов
/ 19 февраля 2011

Похоже, вы пропустили знак равенства в начале.Следует читать:

<%= link_to 'DeleteStuff', @widget, :confirm => 'Are you sure?', :method => :delete %>
2 голосов
/ 19 февраля 2011

, чтобы решить вашу маршрутизацию и сделать ваше дополнительное действие методом удаления, попробуйте это;

в маршрутах. Rb

resources :widgets do
  member do
    delete 'delete_stuff'
  end
end
1 голос
/ 19 февраля 2011

Сначала запустите rake routes, чтобы узнать, какие URL-помощники вам доступны.Вы можете увидеть строку, начинающуюся с:

delete_stuff_widget

Затем вы можете добавить path или url, чтобы получить имя, которое следует использовать в ваших представлениях и контроллерах.Я подозреваю, что ваша новая ссылка будет выглядеть так:

link_to  "DeleteStuff", delete_stuff_widget_path(@widget), :confirm => "Sure?", :method => :delete
...