Настройка маршрутов в RoR v3 без представлений, только JavaScript? - PullRequest
1 голос
/ 06 июня 2011

Это, наверное, очень простой вопрос.Я новичок в Rails и только что преодолел свой первый крупный контрольно-пропускной пункт.У меня есть два контроллера, группы и запросы на членство.Когда кто-то отправляет MembershipRequest, администратор группы может принять или отклонить запрос.В моем контроллере MembershipRequests у меня есть два метода: принять и отклонить.Они оба работают, но теперь я не уверен, что имею дело с моими маршрутами.

Это важная часть моих маршрутов. Rb:

resources :groups do
  member do
    get 'members'
    resources :membership_requests do
      member do
        post 'accept'
        post 'deny'
      end
    end
    ...
  end
end

Хорошо, на мой настоящий вопрос: яхотите иметь возможность принимать и отклонять запросы без дополнительной страницы.Я хочу использовать JavaScript, чтобы использовать кнопку на моей индексной странице MembershipRequests, где администратор может принимать или отклонять запросы.

Вот мой код ошибки для кнопок принятия и отклонения:

<%= link_to "Accept", :controller => 'membership_requests', :action => 'accept', :confirm => 'Are you sure?' %>

<%= link_to "Deny", :controller => 'membership_requests', :action => 'deny', :confirm => 'Are you sure?' %>

Нажав на любую из этих ссылок, вы получите No route matches "/groups/1/membership_requests/1/{accept,deny}", как я и ожидал.Но я не знаю, как обойти это.Спасибо!

1 Ответ

0 голосов
/ 06 июня 2011

Я думаю, link_to также должен иметь :method => :post, потому что вы отображаете его на пользовательское (не RESTful) действие (это только предположение) и :remote => true, чтобы сообщить rails, что эта ссылка использует ненавязчивый JS ,

Эта скринкаст может помочь или, по крайней мере, дать отправную точку.

Да, и да. Как предполагает Райан, вам лучше использовать что-то вроде этого:

@requests.each do |request|
  link_to "Accept", membership_request_accept_path(request), :confirm => 'Are you sure?', :remote => true
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...