Rails 3 Проблема с маршрутами - PullRequest
0 голосов
/ 20 мая 2011

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

=link_to "accept", friendship, :method => :put

, и я пытаюсь отобразить «put» для использования действия «update» в моем контроллере

в моих маршрутах, напримертак

resources :friendships do
   collection do
    get :create
    delete :destroy
    put :update
   end
 end

поэтому, если я использую метод "get", он должен получить нового друга (который работает), если я удаляю, то используется действие "destroy", и если я помещаю действие "update", получимб.

Я так понимаю, я все делаю как-то не так.

моя ссылка "создать" друга выглядит так

=link_to "Add Friend", friendships_path(:friend_id => provider), :method => :post

и это мои друзья.хамл

.profile
  .providers
    %h1 Other Users
    - @providers.each do |provider|
      %p
        =provider.login
        =link_to "Add Friend", friendships_path(:friend_id => provider), :method =>         
:post
  .friends
    %h1 Friends
    - @friends.each do |friendship|
      %p
        =friendship.friend.login
        =link_to "remove", friendship, :method => :delete
        =link_to "message", memos_path(:other_user => friendship.friend)

  .friends-out
    %h1 Friends Out
    - @friends_out.each do |friendship|
      %p
        =friendship.friend.login
        =link_to "remove", friendship, :method => :delete

  .friends-in
    %h1 Friends In
    - @friends_in.each do |friendship|
      %p
        =friendship.friend.login
        =link_to "remove", friendship, :method => :delete
        =link_to "accept", friendship, :method => :put

1 Ответ

0 голосов
/ 20 мая 2011

Да, вы почти все делаете правильно, но вы делаете это неправильно. Вы должны сделать так:

resources :friendships

Не больше, не меньше, вот и все. Поскольку, когда вы используете ресурсы, он по умолчанию сопоставляет протокол put с действием update, он сопоставляет протокол удаления с действием destroy и сопоставляет протокол POST с действием create. Потому что вы не должны использовать GET, когда база данных каким-то образом изменяется (создавать, обновлять, уничтожать).

А когда вы используете помощник link_to, попробуйте это так:

=link_to "accept", friendship_path(@friendship), :method => :put

Edit:

Также убедитесь, что у вас включен javascript по умолчанию для обработки указанного метода публикации:

<%= javascript_include_tag :defaults %>
<%= csrf_meta_tag %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...