2012-06-15 2 views
1

Пользователи имеют подписку на каналы, но когда я изменить (как это было предложено в другом месте на stackO)Rails: Я хочу, чтобы добавить индекс к ресурсу: символ маршрута

resource :subscriptions 

в

resources: subscriptions 

он ломает некоторые ajax-функциональность, которую я уже реализовал в отношении уничтожения.

Я хочу, чтобы иметь возможность связываться с/subscriptions/и иметь возможность просматривать все свои подписки. Проблема в том, что в настоящее время он приводит меня к подпискам # show, когда я действительно хочу #index.

Как мне это сделать?

Вот мой AJAX:

<div id="subscribe" class="shadow"> 
<% if session[:read_random] 
    unless is_subscribed?(session[:read_random].last)%> 
      <%= link_to 'Subscribe', subscriptions_path(feed_id: session[:read_random].last), method: :post, remote: :true %> 

    <% else %> 
     <%= link_to 'Unsubscribe', subscriptions_path(feed_id: session[:read_random].last), method: :delete, remote: :true %> 

<% end 
    end %> 
</div> 

Вот мой уничтожить методу

def destroy 

     if params[:feed_id] 
      #this is the ajax call 
      @subscription = Subscription.find_by_user_id_and_feed_id(session[:user_id], params[:feed_id]) 
     else 
      #this is the index destroy call (unsubscribe) 
      @subscription = Subscription.find(params[:id]) 
     end 
    @subscription.destroy 

    respond_to do |format| 
    format.html { redirect_to request.referer } 
    format.js 
    format.json { head :no_content } 
    end 
end 
+0

Разница, которая похожа на разрыв моей функции ajax, заключается в том, что ни один маршрут не соответствует [DELETE] "/ subscriptions" после добавления 's' в 'resource' –

ответ

0

Использование по умолчанию находчивые маршруты для множественного ресурса, собственно уничтожить маршрут будет subscription_path(id), method: :delete. Обратите внимание, что подписка уникальна. Для этих маршрутов путь уничтожения обычно идентичен пути show и update, за исключением используемого метода http.

Смежные вопросы