Rails 3: не удается заставить form_for работать как «delete» после RESTful achitecture => всегда с ошибкой ROUTING - PullRequest
1 голос
/ 17 января 2011

У меня очень простой рендер, который выглядит следующим образом:

<%= form_for(:relationships, :url => relationships_path, :html => {:method => 'delete'}) do |f| %>
<div><%= f.hidden_field :user_id_to_unfollow, :value => @user.id %></div>
<div class="actions"><%= f.submit "Unfollow" %></div>
<% end %>

Когда я отправляю эту форму, она всегда дает мне

Routing Error
No route matches "/relationships"

на моей странице.

В контроллере отношений я создал все методы проперса:

def create    
...
end

def destroy    
...
end

def update    
...
end

def show    
...
end

И в моей конфигурации маршрутов я позволил разрешить все маршруты для контроллера отношений

resources :relationships

Но я не могу войти в метод уничтожения контроллера: (

Однако, если я уберу

:html => {:method => 'delete'}

параметр метода в form_for, тогда я получаю метод создания контроллера нет pb.

Я не понимаю ....

Alex

ps: это результаты граблей для отношений:

relationships GET    /relationships(.:format)          {:action=>"index", :controller=>"relationships"}
              POST   /relationships(.:format)          {:action=>"create", :controller=>"relationships"}

1 Ответ

4 голосов
/ 17 января 2011

Вы должны указать запрос delete на один URL ресурса, например.relationships/4325.Запустите rake routes, чтобы увидеть, какие комбинации URL / глаголов действительны.

- изменить

Маршруты для ресурсов отношений:

resources :relationships, :only => [:index, :create, :destroy]

Кнопка отмены подписки (создает форму длясам):

= button_to "Unfollow", relationship_path(relationship), :method => 'delete'
...